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

标签 c sockets tcp

我正在尝试开发一个 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_addrsin_port 结构成员,分别。这两个值都是网络字节顺序的数值。您可以使用 inet_ntoa() 之类的函数将 IP 转换为人类可读的字符串,并使用 ntohs() 将端口号转换为字节顺序匹配的整数调用机器,以便您可以更自然地使用它。

另请查看 getpeername()getsockname() 函数。

关于c - 如何在c中使用tcp套接字编程查找客户端ip地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25341862/

相关文章:

c - 如何选择缓冲区大小?

c - 使用 openssl 在 stdout RSA 公钥上打印

c# - .Net 3.5 异步套接字服务器性能问题

javascript - socket.io 监听器在函数式 React 中触发太多次

networking - 没有服务器的 TCP P2P

java - C#与Java之间的TCP通信编码问题

c - 如何从十六进制值中提取低位字节?

c - 如何在 C 中实现 ctime 以存储到字符缓冲区中?

linux - 异步连接和断开与 epoll (Linux)

c - 运行非阻塞 TCP 代码时出现 memcheck 错误