Obtendo o IP da interface que recebeu um pacote UDP recvfrom () (Microsoft)

Usando recvfrom() em um soquete vinculado a INADDR_ANY em um PC com hospedagem múltipla da Microsoft. Quando recvfrom() obtém um pacote UDP: como posso encontrar a interface (IP) que recebeu o pacote?

0
Microsoft PC? Essa é uma gama bastante ampla de possibilidades, estou assumindo o Windows - mas ainda assim, qual versão? O Win 3.11 e o Win 7 são ligeiramente diferentes. Além disso, o que você tentou? Quais resultados você esperava? O que você conseguiu em vez disso?
adicionado o autor Piskvor, fonte
- por algum motivo eu não posso editar o post original - usando recvfrom() de win2000 (não posso usar WSARecvMsg ()) para Win7 até agora não consegui encontrar nada para fazer isso
adicionado o autor user664239, fonte

1 Respostas

Não há como saber o IP de recebimento quando um único soquete de escuta está vinculado a vários IPs. Ao invés de ligar um único socket a INADDR_ANY , você pode consultar a lista de IPs locais da máquina usando GetAdaptersInfo() e/ou GetAdapterAddresses() , Em seguida, crie um soquete de escuta separado para cada IP. Você pode usar o getsockname() para saber a qual IP um determinado socket está vinculado, mas somente quando esse socket está ligado a um IP específico, não a múltiplos IPs.

0
adicionado