客户端IP返回::1的解决办法

刚刚测试程序,一个功能要求获取客户端IP,然而在本机测试过程中发现,客户端(本机)IP始终返回::1,获取 IP 部份的代码如下:

Code

于是最终获取倒的是因无法匹配而返回的默认IP 0.0.0.0

 google了一下,没有结果。

继续想办法。发现不影响获取其它客户端(非本机)IP。根据此现象,我想应该是localhost引起的,于是查看host映射,果然发现::1

(Host映射查看方法 C:\Windows\System32\drivers\etc  文件hosts)

# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
::1             localhost

原来是因为操作系统开启了IPV6,它对localhost进行了映射的原因。如果我们需要获取的IP是IPV4的,那么可以删掉::1映射。

如果将来我们需要获取的是IPV6的IP,那么就需要这样的映射。然后程序里统一实现获取IPv6的代码。

KidYang
原文地址:https://www.cnblogs.com/EasyLive2006/p/1353544.html