日期:2014-05-16  浏览次数:20576 次

IP地址怎么处理?
UDP服务器,每次只能发一次消息给客户端,然后等客户端sendto之后才能通过recvfrom得到客户端的IP,之后再sendto,有没有办法保存客户端的IP?

------解决方案--------------------
使用会话的概念,为每个和你通迅过的IP以某种关键字(比如用户ID)记录到内存中,当需要和某人进行下次通迅时,根据关键字找到IP,然后sendto
------解决方案--------------------
得到一次IP后,将IP存入一个字符数组中,再次 sendto 时读取。

使用时应该要转换地址格式,不过没试过。。。。
------解决方案--------------------
函数 inet_ntop 将网络字节序的二进制地址转换成文本字符串格式

inet_pton将文本字符串格式转换成网络字节序的二进制地址。

详细用法 man 手册看看
------解决方案--------------------
下面是我在01年的帖子中找的
C/C++ code

/*在服务器端取客户端IP地址 
 *struct   sockaddr_in中的sin_addr.s_addr存放Client端的IP地址。 
*/以下示例显示Client端的IP地址。 
struct   sockaddr_in   sin; 
char   *ptr,ClientIP[20]; 
//在accept执行后 
ptr=(unsigned   char   *)&(sin.sin_addr.s_addr); 
sprintf(ClientIP,   "%u.%u.%u.%u ",ptr[0],ptr[1],ptr[2],ptr[3]);