获取实际机器的IP地址

时间:2014-01-13 03:31:04

标签: java php ip gateway

我需要获取计算机的实际(不是网关)IP地址,但我尝试的所有解决方案都返回网关IP地址。例如,此链接Get the client IP address using PHP中的所有建议都会返回网关地址。有没有办法可以获得我的计算机的实际IP地址(公共) - 在php或java?

2 个答案:

答案 0 :(得分:0)

java的 InetAddress 类可能很有用。

InetAddress IP=InetAddress.getLocalHost();
System.out.println("IP is := "+IP.getHostAddress());

输出:IP为:= 10.100.95.228

答案 1 :(得分:0)

从评论中,您可能希望为访问服务器的每台计算机创建唯一标识符。没有任何一条信息可以作为这样的标识符,这就是原因:

IP地址 您可以看到的IP地址是公共地址,而不是NAT路由器后面的设备的私有地址。

MAC地址 每台计算机中每个网卡的MAC地址都是唯一的,但该信息在LAN网段之外是不可用的。

您可以使用多条信息(如IP地址和用户代理)的组合来做出有根据的猜测,即给定的请求来自一个独特的用户,但这是猜测..没有确定它的方法。

使用$_SERVER['REMOTE_ADDR']获取用户的公共地址,然后使用$_SERVER['USER_AGENT']获取其用户代理。如果这两者的组合是唯一的,那么请求很可能来自一个独特的用户。

另一种方法是设置一个具有遥远的未来到期日期或会话ID的cookie。但这一切都取决于你需要多长时间跟踪用户,如果你需要在他们关闭浏览器之后跟踪它们然后返回等等。唯一全面证明的方法是创建一个帐户他们在您的网站上进行身份验证。