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]);