如何在c中使用tcp套接字编程查找客户端ip地址

时间:2014-08-16 16:52:50

标签: c sockets tcp

我正在尝试开发TCP服务器,因为服务器客户端在设置连接后与服务器连接。但是我如何从该连接中找到IP地址。这里给出了示例代码。

int connfd;
int listenfd;
struct sockaddr_in cliaddr;
socklen_t clilen;

connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);

这不是确切的代码。但现在我需要将客户端地址作为字符串找到。

2 个答案:

答案 0 :(得分:4)

accept()sockaddr_insin_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中。