我正在尝试开发TCP服务器,因为服务器客户端在设置连接后与服务器连接。但是我如何从该连接中找到IP地址。这里给出了示例代码。
int connfd;
int listenfd;
struct sockaddr_in cliaddr;
socklen_t clilen;
connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
这不是确切的代码。但现在我需要将客户端地址作为字符串找到。
答案 0 :(得分:4)
accept()
在sockaddr_in
和sin_addr
结构成员中为您填写sin_port
结构中的客户端远程IP地址和端口号, 分别。这两个值都是网络字节顺序的数值。您可以使用inet_ntoa()
之类的函数将IP转换为人类可读字符串,并使用ntohs()
将端口号转换为字节顺序与调用计算机匹配的整数,以便您可以使用它更多自然。
另请参阅getpeername()
和getsockname()
函数。
答案 1 :(得分:1)
cliaddr是客户端结构sockaddr_in的结构变量。
cliaddr.sin_addr.s_addr包含客户端的IP地址。
inet_ntop(AF_INET,&(cliaddr.sin_addr),clientAddr,CLADDR_LEN);将客户端的IP地址检索到字符串clientAddr中。