如何在WinSock2的DGRAM套接字上获取传入数据包的IP地址?
问题描述:
我正在做一些WinSock和服务器的工作,我想获取客户端向服务器发送一个信息包的IP地址。我宁愿使用SOCK_DGRAM样式的套接字,使用UDP协议。由于我没有用listen(),accept()和connect()方法使用套接字,因此无法使用getpeername(),我想知道如何获取这些信息。简短的代码片段将不胜感激。此外,现在我只能在局域网上的服务器上进行通信,但最终需要进一步移动。如何在WinSock2的DGRAM套接字上获取传入数据包的IP地址?
编辑: 至于代码去,我不知道该怎么把。
我有sock_serv
它像这样初始化的插座:
sock_serv =插座(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
稍后,我会在设置超时后执行一些recv()。我已经确认超时工作,我可以从recv获取数据,但不知道如何获取发件人。
答
使用recvfrom。它有一个输出struct sockaddr参数。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms740120(v=vs.85).aspx
+0
非常感谢,这应该工作。我一直坚持这一点。 – user16871 2014-10-16 15:05:59
请显示代码。 – Etixpp 2014-10-16 14:44:51