-1

我需要找到用户的本地 IP。服务器在路由器后面,所以我不能使用任何服务器端方法。我也不想使用任何 3rd 方服务,http://jsonip.appspot.com/因为我对其进行了测试,并且它的服务器不时出现故障。

使用Java,我想通过类似的方式获得IP

<script type="text/javascript">
        function myIP() {
            var yip2 = java.net.InetAddress.getLocalHost();
            var yip = yip2.getHostAddress();
            return yip;
        } //end myIP

        alert("your machine's local network IP is " + myIP())
    </script>

但它不起作用。我怎样才能让它工作?

4

3 回答 3

1

我已将其用于您的要求:

http://jsonip.appspot.com/?callback=getip

试试这个代码:

<script type="application/javascript">
    function getip(json){
      //json.ip will have the client IP and this will alert it
      alert(json.ip);
    }
</script>

<script type="application/javascript" src="http://jsonip.appspot.com/?callback=getip"></script>

这与 java 无关(java-script 是另一回事)

于 2013-02-06T12:02:41.267 回答
1
  1. 没有服务器端
  2. 没有第三方

听起来你已经“卡住”了你已经提供的东西。您的脚本实际上让我感到好奇,因为乍一看,您似乎在混合服务器和客户端(java 和 javascript)+ 所有评论都指向它。但好奇心是件好事:)

显然,虽然不是很可靠,但您可以在支持浏览器中调用 Java 方法。Java 也是客户端(丢失的概念)。

我将复制并粘贴这个,我从未尝试过(因为我从未像你一样受到限制):

if (java && java.net)
ip = ''+java.net.InetAddress.getLocalHost().getHostAddress();
else ip = 'unknown';

取自About.com - 它还描述了您需要做些什么才能至少给它一个工作的机会(上传,不能从本地完成)。


更新:

忘了它。正如@Esailija 所指出的那样,我不是Java 人(首先),上面的脚本将不再(不再)工作:

2.1.5 不推荐使用的功能:全局包、java 和 netscape 关键字

Mozilla 浏览器系列历来支持从 JavaScript 访问 Java 语言,即使在不包含 Java 小程序的网页上也是如此。在这个浏览器系列中,有可供 JavaScript 代码使用的全局 java、netscape 和 Packages 关键字,它们允许调用静态方法、访问静态字段和创建 Java 类的新实例,其方式与上面的 per-applet Packages 关键字类似。

当网页上有多个小程序可用时,这些关键字的语义就会出现问题。如果您想访问一个特定小程序的用户定义类(例如,在 com.mycompany 包中),全局 Packages 关键字如何知道要引用哪个小程序?新的 Java 插件还支持将多个 Java 虚拟机实例附加到 Web 浏览器以执行小程序。在这种情况下,这些全局关键字的语义变得更加复杂。

因此,不推荐使用全局 java、netscape 和 Packages JavaScript 关键字。它们继续在 Firefox 浏览器中运行,但强烈建议使用它们转换现有代码以使用新的 per-applet Packages 关键字。无法使用这些全局关键字访问用户定义的类;尝试这样做会产生不确定的结果。

参考这里

于 2013-02-06T12:46:14.127 回答
0

服务器在路由器后面

配置路由器以添加X-Forwarded-For标头。它包含路由器转发请求的IP(或“正确”实现中的IP链),即客户端IP。现在,客户端 IP 当然也可以是另一个代理,但是是的。

于 2013-02-06T12:14:56.967 回答