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!

questionAnswers(2)

yourAnswerToTheQuestion