Получение IP-адреса интерфейса, получившего UDP-пакет recvfrom() (Microsoft)
Использование recvfrom() в сокете, связанном с INADDR_ANY на многосетевом ПК Microsoft. когда recvfrom() получает пакет UDP: как я могу найти интерфейс (IP), который получил пакет?
1 ответ
Невозможно узнать принимающий IP, когда один прослушивающий сокет привязан к нескольким IP. Вместо привязки одного сокета к INADDR_ANY
вы можете запросить список локальных IP-адресов компьютера, используя GetAdaptersInfo()
и / или GetAdapterAddresses()
затем создайте отдельный сокет прослушивания для каждого IP. Ты можешь использовать getsockname()
знать, к какому IP-адресу привязан данный сокет, но только тогда, когда этот сокет связан с конкретным IP-адресом, а не с несколькими IP-адресами.