Отримання IP-інтерфейсу, який отримав пакет recvfrom () UDP (Microsoft)

Використання recvfrom() на сокеті, пов'язаному з INADDR_ANY на багатоскладовому комп'ютері Microsoft. коли recvfrom() отримує пакет UDP: як я можу знайти інтерфейс (IP), який отримав пакет?

0
Microsoft PC? Це досить широкий спектр можливостей, я припускаю, що Windows - але все ж, яка версія? Win 3.11 і Win 7 трохи відрізняються. Також, що ви пробували? Які результати ви очікували? Що ви замість цього отримали?
додано Автор Piskvor, джерело
- з якоїсь причини я не можу редагувати оригінальний пост - за допомогою recvfrom() з win2000 (я не можу використовувати WSARecvMsg ()) для Win7 до сих пір я не міг знайти нічого, щоб зробити це
додано Автор user664239, джерело

1 Відповіді

Існує жодного способу дізнатися IP прийому, коли один сокет прослуховування прив'язаний до декількох IP-адрес. Замість прив'язки одного сокета до INADDR_ANY , можна отримати запит до списку локальних IP-адрес машини, використовуючи GetAdaptersInfo() та/або GetAdaptAddresses() , потім створити окремий роз'єм для кожного IP. Ви можете скористатися getsockname() , щоб дізнатися, до якого IP-адреси прив'язаний даний сокет, але тільки тоді, коли цей сокет прив'язаний до певного IP-адреси, а не до декількох IP-адрес.

0
додано