TCP recvfrom () no almacena 'desde'

Estoy creando un programa de servidor usando TCP y quiero obtener la dirección IP del remitente del mensaje que acabo de recibir. Aquí está mi 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;
}

Así que estoy usando los mensajes de Windows para ver si debo revisar los paquetes. La recepción de datos funciona, puedo leerlo y todo. Pero la variable recvIn no se ve alterada por recvfrom. Entonces cuando hago el cout << inet_ntoa (recvIn.sin_addr) << "\ n" escribe "0.0.0.0". He buscado en Google este problema y la mayoría de las personas que tuvieron este problema se olvidaron de inicializar recv_length. Pero estoy bastante seguro de que lo hice correctamente aquí. ¿Alguien puede ver lo que estoy haciendo mal? ¿O necesito cambiar algo con los datos que se están enviando? ¿Es posible que los datos entrantes no tengan la dirección IP? Que es algo que dudo mucho, porque estoy usando TCP.

¡Gracias por su tiempo, espero poder resolver esto!

Respuestas a la pregunta(2)

Su respuesta a la pregunta