【问题标题】:how to find clients ip address using tcp socket programming in c如何在c中使用tcp套接字编程查找客户端IP地址
【发布时间】:2016-04-09 12:57:58
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您是否想过查找您正在使用的任何类型?
  • 对不起,我没有得到你。
  • 我的意思是:阅读您正在使用的数据类型的文档。那里可能有提示......

标签: c sockets tcp


【解决方案1】:

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

同时查看getpeername()getsockname() 函数。

【讨论】:

    【解决方案2】:

    cliaddr 是客户端的结构体 sockaddr_in 的结构体变量。

    cliaddr.sin_addr.s_addr 包含客户端的 IP 地址。

    inet_ntop(AF_INET, &(cliaddr.sin_addr), clientAddr, CLADDR_LEN);将客户端的 IP 地址检索到字符串 clientAddr 中。

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 2016-01-01
      • 2020-05-14
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多