Атрыманне IP-інтэрфейсу, які атрымаў recvfrom () UDP пакетаў (Microsoft)

Выкарыстанне recvfrom() на сокеце, звязаны з INADDR_ANY на Microsoft многосетевых ПК. калі recvfrom() атрымлівае UDP-пакет: як я магу знайсці інтэрфейс (IP), які атрымаў пакет?

0
Microsoft PC? Гэта даволі шырокі спектр магчымасцяў, я мяркую, што Windows - але ўсё-ткі, якая версія? Win 3.11 і Win 7 з'яўляюцца <�я> трохі </я> розныя. Акрамя таго, што вы спрабавалі? Якія вынікі вы чакаеце? Што вы атрымаеце ўзамен?
дададзена аўтар Piskvor, крыніца
--Для нейкай прычыне я не магу рэдагаваць зыходны post-- выкарыстоўваючы recvfrom() з win2000 (я не магу выкарыстоўваць WSARecvMsg ()) для Win7 да гэтага часу я не мог знайсці нічога, каб зрабіць гэта
дададзена аўтар user664239, крыніца

1 адказы

Там няма ніякага спосабу даведацца, які прымае IP, калі адзін слухае сокет звязаны з некалькімі IP-адрасоў. Замест прывязкі аднаго сокета да INADDR_ANY , вы можаце запытаць спіс апарата лакальных IP-адрасоў з дапамогай GetAdaptersInfo() і/або GetAdapterAddresses() , а затым стварыць асобны слухае сокет для кожнага IP. Вы можаце выкарыстоўваць getsockname() , каб даведацца, які IP дадзены сокет прывязаны, але толькі тады, калі што сокет прывязаны да пэўнага IP, а не некалькі IP.

0
дададзена