UDP многоадресная передача с определенной сетевой карты - PullRequest
2 голосов
/ 29 октября 2010

Я ищу сетевых гуру, чтобы помочь мне с проблемой. У меня много компьютеров под управлением моего программного обеспечения, использующего многоадресную передачу UDP. Это работает нормально, если компьютеры подключены ТОЛЬКО к одной сети (сеть А). Мой компьютер (на котором также установлено указанное программное обеспечение) будет прослушивать порт XXXX для многоадресных рассылок. У этого компьютера есть две сетевые карты, и когда я подключаю его к другой сети, сети B, мое программное обеспечение перестает работать Проблема в том, что я не знаю, из какой сети пришла данная групповая передача. И если я отправляю многоадресную рассылку, я не могу сказать ей использовать сеть A вместо сети B или наоборот.

Мои вопросы:

  1. Есть ли способ отличить пакеты, поступающие из разных сетей ??
  2. Есть ли способ отправить многоадресную рассылку в сеть A, а НЕ в сеть B?

Я использую сокеты C ++ и Win32. Спасибо всем, кто отвечает.

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

Вы должны прослушивать многоадресные пакеты на одном интерфейсе, где вы присоединились к группе.Вы должны явно установить интерфейс, используемый для отправки многоадресных пакетов (в противном случае они маршрутизируются как все остальное, маршрут по умолчанию и т. Д.).Оба выполняются через setsockopt звонки.Вот несколько ссылок для вас:

Отказ от ответственности: ссылки, по общему признанию, ориентированы на Unix, поэтому ваш пробег Windows может отличаться :)

0 голосов
/ 02 ноября 2010

На многосетевых хостах вам необходимо присоединиться к группе многоадресной рассылки через все интерфейсы последовательно или через все те, которые вам нужны. Если вас интересует исходная сеть, вы можете использовать несколько разъемов M / C, каждый из которых связан с различным интерфейсом, одним и тем же портом, и каждый из них присоединяется к группе; затем сам принимающий сокет сообщает, из какой сети поступает любой входящий трафик.

0 голосов
/ 29 октября 2010

Работая над проектом с MC UDP на резервных сетевых картах за последний год, мы увидели похожую проблему. После небольшого сражения с winsock, наше окончательное решение состояло в том, чтобы расставить приоритеты трафика с помощью команды DOS route

route add 224.x.x.x  ... [desired gateway] METRIC 1

Это гарантировало, что трафик выходил только на интерфейс, который мы хотели.

Я понимаю, что это может быть не совсем то, что вам нужно, но, по крайней мере, это может быть решение с временным интервалом, пока вы внедряете другое исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...