Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C套接字中获取客户端的IP地址_C_Sockets_Ip Address - Fatal编程技术网

在C套接字中获取客户端的IP地址

在C套接字中获取客户端的IP地址,c,sockets,ip-address,C,Sockets,Ip Address,如何获取服务器所连接的客户端的ip地址? 以下是我如何接受传入的客户端: newsockfd = accept(sockfd, (struct sockaddr*)&clt_addr, &addrlen); 我尝试了以下方法: printf("ip is: %s\n", inet_ntoa(clt_addr.sin_addr)); 但是我得到的127.0.0.1不是我的ip地址。这可能与我使用localhost测试我的客户机和服务器有关吗 这可能与我使用localhost测

如何获取服务器所连接的客户端的ip地址? 以下是我如何接受传入的客户端:

newsockfd = accept(sockfd, (struct sockaddr*)&clt_addr, &addrlen);
我尝试了以下方法:

 printf("ip is: %s\n", inet_ntoa(clt_addr.sin_addr));
但是我得到的127.0.0.1不是我的ip地址。这可能与我使用localhost测试我的客户机和服务器有关吗

这可能与我使用localhost测试我的客户机和服务器有关吗

对。如果连接到localhost上的服务器,则客户端也将是localhost。此连接不是通过Internet进行的,不涉及网络硬件,客户端数据包将来自本地主机。这被称为并完全发生在软件中


如果客户端要使用服务器的外部IP地址连接到服务器,则必须通过外部路由进行连接,因此需要可路由的IP地址。例如,我可以连接到localhost上的服务器,但我不能使用我的可路由IP地址,因为我的路由器会阻止传入连接。

就localhost而言,127.0.0.1是您的IP地址。因此,如果我不使用localhost,我会得到一个实际的ip地址吗?@Rachelle是的,如果你的应用程序托管在网络上,并且有人访问它……你会得到实际的ip地址。但是现在,由于您通过本地主机访问它。您的IP地址为127.0.0.1127.0.0.1。根据定义,IP地址始终是您的IP地址。这是客户端通过从同一主机内连接到127.0.0.1而连接的地址。如果客户端使用了另一个IP地址,您将获得另一个IP地址。