在C套接字中获取客户端的IP地址
如何获取服务器所连接的客户端的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测
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地址。