如何获取客户端的IP地址?

时间:2017-12-25 17:37:30

标签: tcp router

我选择了一个简单的Server& TCP的客户端程序。 我有2个不同的网络,分别由ISP1和ISP2提供。 服务器在ISP1的网络上运行,我已经在路由器上进行了端口转发,以便它可以接受远程连接,客户端在ISP 2的网络上,两者都可以很好地通信。 现在我想知道客户端的IP地址,我在服务器端使用inet_ntoa(..)函数问题是我得到目的地IP地址作为ISP1的公共IP地址,而不是它应该得到ISP2的公共IP地址

代码段:

if ((new_socket = accept(server_fd, (struct sockaddr *)&cli_address, 
                   (socklen_t*)&cli_addrlen))<0)
{
    perror("accept");
    exit(EXIT_FAILURE);
}

printf("Client ip address:%s",inet_ntoa(cli_address.sin_addr));
printf("\t");
printf("Client port:%d",ntohs(cli_address.sin_port));
printf("\n");

我尝试在服务器端运行的wireshark上探测它,我也找不到客户端IP地址,它显示目标IP地址作为该数据包的网络ISP1的公共IP地址。

0 个答案:

没有答案