Obtención de la IP de la interfaz que recibió un paquete UDP recvfrom () (Microsoft)

Uso de recvfrom() en un socket vinculado a INADDR_ANY en una PC multihomed de Microsoft. cuando recvfrom() obtiene un paquete UDP: ¿cómo puedo encontrar la Interfaz (IP) que recibió el paquete?

0
Microsoft PC? Supongo que es un rango de posibilidades bastante amplio, pero aún así, ¿qué versión? Win 3.11 y Win 7 son ligeramente diferentes. Además, ¿qué has probado? ¿Qué resultados esperabas? ¿Qué obtuviste en su lugar?
agregado el autor Piskvor, fuente
- por alguna razón no puedo editar la publicación original-- usando recvfrom() desde win2000 (no puedo usar WSARecvMsg ()) a Win7 hasta ahora no pude encontrar nada para hacer esto
agregado el autor user664239, fuente

1 Respuestas

No hay forma de saber la IP de recepción cuando un solo zócalo de escucha está enlazado a múltiples IP. En lugar de enlazar un solo socket a INADDR_ANY , puede consultar la lista de direcciones IP locales de la máquina utilizando GetAdaptersInfo() y/o GetAdapterAddressesAddress() . luego crea un conector de escucha separado para cada IP. Puede utilizar getsockname() para saber a qué IP está vinculado un socket determinado, pero solo cuando ese socket está vinculado a una IP específica, no a varias IP.

0
agregado