TCP recvfrom () не хранит 'from'

Я делаю серверную программу с использованием TCP и хочу получить IP-адрес отправителя только что полученного сообщения. Вот мой код:

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

Поэтому я использую сообщения Windows, чтобы проверить, нужно ли мне проверять пакеты. Получение данных работает, я могу прочитать это и все. Но переменная recvIn не изменяется с помощью recvfrom. Поэтому, когда я делаю cout << inet_ntoa (recvIn.sin_addr) << "\ n", он пишет "0.0.0.0". Я погуглил эту проблему, и большинство других людей, у которых была эта проблема, забыли инициализировать recv_length. Но я почти уверен, что сделал это правильно здесь. Кто-нибудь может увидеть, что я делаю не так? Или мне нужно что-то изменить с отправляемыми данными? Возможно, входящие данные не имеют IP-адреса. В этом я очень сомневаюсь, потому что я использую TCP.

Спасибо за ваше время, я надеюсь, я смогу решить эту проблему!

Ответы на вопрос(2)

Ваш ответ на вопрос