2010-05-17 4 views
2

Parfois, je dois envoyer un message à une adresse IP spécifique et parfois je dois diffuser le message à toutes les adresses IP de mon réseau. À l'autre extrémité, je dois faire la distinction entre une diffusion et une diffusion normale, mais recvfrom() renvoie simplement l'adresse d'origine du message; il n'y a pas de différence entre eux. Quelqu'un peut-il m'aider à les distinguer?Comment identifier un message diffusé?

UDP est le protocole.

Répondre

5

Je ne pense pas que ce soit possible avec le module socket de Python. UDP est un protocole très minimaliste, et la seule façon de distinguer entre un paquet UDP de diffusion et un paquet UDP non diffusé consiste à regarder l'adresse de destination. Cependant, vous ne pouvez pas inspecter cette partie du paquet avec l'API socket BSD (si je me souviens bien), et le module socket expose uniquement l'API de socket BSD. Votre meilleur pari serait probablement d'utiliser le premier octet du message pour indiquer s'il s'agit d'une diffusion ou d'un message unicast.

Questions connexes