Как определить передаваемое сообщение? - PullRequest
2 голосов
/ 17 мая 2010

Иногда мне нужно отправить сообщение на определенный IP-адрес, а иногда мне нужно передать сообщение всем IP-адресам в моей сети. На другом конце я должен различать широковещательную и обычную трансляции, но recvfrom() просто возвращает адрес, с которого пришло сообщение; между ними нет разницы. Может ли кто-нибудь помочь мне отличить их?

UDP - это протокол.

1 Ответ

5 голосов
/ 17 мая 2010

Я не думаю, что это возможно с модулем socket в Python. UDP является очень минималистичным протоколом, и единственный способ различить широковещательный и не вещательный пакеты UDP - это посмотреть адрес назначения. Однако вы не можете проверить эту часть пакета с помощью API сокета BSD (если я правильно помню), и модуль socket предоставляет только API сокета BSD. Лучше всего было бы использовать первый байт сообщения, чтобы указать, является ли оно широковещательным или одноадресным сообщением.

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