我正在尝试开发一个 TCP 服务器,因为服务器客户端在建立连接后与服务器连接。但是我如何从该连接中找到 ip 地址。此处提供示例代码。
int connfd;
int listenfd;
struct sockaddr_in cliaddr;
socklen_t clilen;
connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
这不是确切的代码。但现在我需要找到一个字符串形式的客户端地址。
最佳答案
accept()
在它填充的 sockaddr_in
结构中为您提供客户端的远程 IP 地址和端口号,在 sin_addr
和sin_port
结构成员,分别。这两个值都是网络字节顺序的数值。您可以使用 inet_ntoa()
之类的函数将 IP 转换为人类可读的字符串,并使用 ntohs()
将端口号转换为字节顺序匹配的整数调用机器,以便您可以更自然地使用它。
另请查看 getpeername()
和 getsockname()
函数。
关于c - 如何在c中使用tcp套接字编程查找客户端ip地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341862/