TCP recvfrom () speichert nicht 'von'

Ich erstelle ein Serverprogramm mit TCP und möchte die IP-Adresse des Absenders der Nachricht erhalten, die ich gerade erhalten habe. Hier ist mein Code:

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

Ich verwende also Windows-Nachrichten, um zu sehen, ob ich nach Paketen suchen soll. Empfang von Daten funktioniert, ich kann es lesen und alles. Die Variable recvIn wird jedoch nicht von recvfrom geändert. Wenn ich also das cout << inet_ntoa (recvIn.sin_addr) << "\ n" mache, schreibt es "0.0.0.0". Ich habe dieses Problem gegoogelt und die meisten anderen Leute, die dieses Problem hatten, haben vergessen, recv_length zu initialisieren. Aber ich bin mir ziemlich sicher, dass ich das hier richtig gemacht habe. Kann jemand sehen, was ich falsch mache? Oder muss ich etwas an den gesendeten Daten ändern? Haben die eingehenden Daten möglicherweise nicht die IP-Adresse. Das bezweifle ich sehr, weil ich TCP verwende.

Vielen Dank für deine Zeit, ich hoffe ich kann das lösen!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage