我正在使用 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
谢谢您的宝贵时间,我希望我能解决这个问题!
TCP 是一种面向连接的协议。from
and fromlen
旨在与无连接协议(例如 UDP)一起使用。根据文档 http://msdn.microsoft.com/en-us/library/windows/desktop/ms740120%28v=vs.85%29.aspx, recvfrom
忽略from
and fromlen
用于面向连接的套接字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)