Получение IP-адреса интерфейса, получившего UDP-пакет recvfrom() (Microsoft)

Использование recvfrom() в сокете, связанном с INADDR_ANY на многосетевом ПК Microsoft. когда recvfrom() получает пакет UDP: как я могу найти интерфейс (IP), который получил пакет?

1 ответ

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

Другие вопросы по тегам