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

mad*_*adu 1 c sockets tcp

我正在尝试开发一个 TCP 服务器,服务器客户端在建立连接后与服务器进行连接。但我如何从该连接中找到 IP 地址。这里给出了示例代码。

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

connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
Run Code Online (Sandbox Code Playgroud)

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

Rem*_*eau 6

accept()sockaddr_in分别在它填充的结构体sin_addr和结构体成员中提供客户端的远程 IP 地址和端口号sin_port。这两个值都是按网络字节顺序排列的数值。您可以使用诸如inet_ntoa()将 IP 转换为人类可读的字符串之类的函数,以及ntohs()将端口号转换为字节顺序与调用机器匹配的整数,以便您可以更自然地使用它。

另请参阅getpeername()getsockname()函数。