Função para recuperar o endereço de destino do cabeçalho de um pacote no Windows XP
Estou interessado em recuperar o endereço de destino para o qual um pacote de entrada é enviado. Por exemplo, no Linux, você pode utilizarrecvmsg
:
res = recvmsg(socket, &msghdr, 0);
get_cmsg = CMSG_FIRSTHDR(msghdr);
struct in_pktinfo *get_pktinfo = (struct in_pktinfo *)CMSG_DATA(get_cmsg);
printf(" - Header destination address (get_pktinfo.ipi_addr)=%s\n", inet_ntoa(pktinfo.ipi_addr));
Etapas foram ignoradas para salvar muitas linhas
A chave aqui é querecvmsg
é fácil de usar. Funções semelhantes são implementadas no Windows XP comorecvfrom
mas o Windows parece não implementar orecvmsg
função.
Existem funções nomeadas da mesma forma, como oWSARevcMsg
função, mas de acordo com a documentação vinculada, ela está incluída apenas no Windows Vista e acima.
Existe uma maneira de obter o endereço de destino do cabeçalho de um pacote no Windows XP?
Sei que o uso do XP é ruim e antigo, infelizmente estamos tentando corrigir um bug em um produto herdado, portanto, neste momento, não podemos simplesmente atualizar.