Получение 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() и/или GetAdapterAddresses() , затем создайте отдельный прослушивающий сокет для каждого IP-адреса. Вы можете использовать getsockname() , чтобы узнать, к какому IP связан данный сокет, но только тогда, когда этот сокет привязан к определенному IP-адресу, а не к нескольким IP-адресам.

0
добавлено