TCP recvfrom () não armazena 'from'
Estou fazendo um programa de servidor usando TCP e quero obter o endereço IP do remetente da mensagem que acabei de receber. Aqui está meu código:
case FD_READ:
{ //Incoming data; get ready to receive
char buffer[DEFAULT_BUFLEN];
int bytes_received;
memset(buffer, '\0', sizeof(buffer));
struct sockaddr_in recvIn;
int recv_length = sizeof(struct sockaddr);
memset((void *)&recvIn, '\0', recv_length);
bytes_received = recvfrom(wParam, buffer, DEFAULT_BUFLEN, 0, (struct sockaddr *)&recvIn, &recv_length);
cout << inet_ntoa(recvIn.sin_addr) << "\n";
break;
}
Então, estou usando mensagens do Windows para ver se devo verificar se há pacotes. Recebimento de dados funciona, eu posso ler e tudo. Mas a variável recvIn não é alterada por recvfrom. Então, quando eu faço o cout << inet_ntoa (recvIn.sin_addr) << "\ n" ele escreve "0.0.0.0". Eu pesquisei esse problema e a maioria das outras pessoas que tiveram esse problema se esqueceram de inicializar o recv_length. Mas tenho certeza que fiz isso corretamente aqui. Alguém pode ver o que estou fazendo errado? Ou preciso alterar algo com os dados que estão sendo enviados? Os dados recebidos talvez não tenham o endereço IP. Que é algo que eu duvido, porque estou usando o TCP.
Obrigado pelo seu tempo, espero poder resolver isso!