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.
Спасибо за ваше время, я надеюсь, я смогу решить эту проблему!