Recvfrom TCP () nie przechowuje „from”

Tworzę program serwera za pomocą TCP i chcę uzyskać adres IP nadawcy wiadomości, którą właśnie otrzymałem. Oto mój kod:

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;
}

Używam więc komunikatów Windows, aby sprawdzić, czy powinienem sprawdzić pakiety. Odbieranie danych działa, mogę je przeczytać i wszystko. Jednak zmienna recvIn nie jest zmieniana przez recvfrom. Więc kiedy robię cout << inet_ntoa (recvIn.sin_addr) << "n" pisze "0.0.0.0". Sprawdziłem ten problem i większość innych osób, które miały ten problem, zapomniało zainicjować recv_length. Ale jestem prawie pewien, że zrobiłem to poprawnie tutaj. Czy ktoś widzi, co robię źle? Czy muszę coś zmienić za pomocą wysyłanych danych? Czy przychodzące dane mogą nie mieć adresu IP. W co bardzo wątpię, ponieważ używam TCP.

Dziękuję za czas, mam nadzieję, że uda mi się to rozwiązać!

questionAnswers(2)

yourAnswerToTheQuestion