Obtention de l'adresse IP de l'interface ayant reçu un paquet UDP recvfrom () (Microsoft)

Utilisation de recvfrom() sur un socket lié à INADDR_ANY sur un PC Microsoft multi-hôte. quand recvfrom() obtient un paquet UDP: comment trouver l'interface (IP) qui a reçu le paquet?

0
Microsoft PC? C’est une gamme assez large de possibilités, je suppose Windows - mais quelle version? Win 3.11 et Win 7 sont légèrement différentes. Aussi, qu'as-tu essayé? Quels résultats attendiez-vous? Qu'as-tu eu à la place?
ajouté l'auteur Piskvor, source
- pour une raison quelconque, je ne peux pas éditer le message d'origine - en utilisant recvfrom() à partir de win2000 (je ne peux pas utiliser WSARecvMsg ()) vers Win7, je n'ai trouvé aucun élément pour le faire
ajouté l'auteur user664239, source

1 Réponses

Il n'y a aucun moyen de connaître l'adresse IP de réception lorsqu'un seul socket en écoute est lié à plusieurs IP. Au lieu de lier un seul socket à INADDR_ANY , vous pouvez interroger la liste d'adresses IP locales de la machine à l'aide de GetAdaptersInfo() et/ou GetAdapterAddresses() , puis créez un socket d’écoute distinct pour chaque IP. Vous pouvez utiliser getsockname() pour savoir à quelle adresse IP une socket est liée, mais uniquement lorsque cette dernière est liée à une adresse IP spécifique et non à plusieurs adresses IP.

0
ajouté