проблема с трансляцией UDP? - PullRequest
       3

проблема с трансляцией UDP?

0 голосов
/ 01 сентября 2010

Если я транслирую, используя сокет UDP, используя sendto () и немедленно вызываю recvfrom (). Я получаю широковещательное сообщение, которое я недавно отправил с того же компьютера? Можно ли как-то избежать этого зацикливания? Любое объяснение, почему я испытываю такие вещи? Я имею в виду, как долго широковещательное сообщение остается в локальной н / ж ??

1 Ответ

2 голосов
/ 03 сентября 2010

Это нормальное поведение.Вы должны прочитать о том, как на самом деле работает UDP-вещание.Ваш локальный ПК находится в той же сети, на которую вы вещаете, поэтому он принимает отправляемую вами рассылку.Вы не можете избежать отправки широковещательной рассылки обратно на локальный ПК, но вы можете посмотреть на отправляющий IP / порт, который сообщает recvfrom (), и игнорировать сообщение, если оно пришло от того же процесса, которому принадлежит сокет, который его транслировал.

В противном случае переключитесь на многоадресную рассылку вместо широковещательной рассылки UDP (тем более, что рассылка UDP в любом случае не поддерживается в IPv6).При многоадресной рассылке получатели должны подписываться на многоадресную рассылку, чтобы получать сообщения, поэтому просто не заставляйте отправляющий компьютер подписываться на собственную многоадресную рассылку.

...