【问题标题】:Java applet only return 127.0.0.1Java 小程序只返回 127.0.0.1
【发布时间】:2012-11-11 09:04:30
【问题描述】:

我创建了一个java小程序来获取本地IP,在网页中输入这个小程序,但它只返回IP 127.0.0.1。
我测试了我在 stackoverflow 上找到的一些答案,但没有一个有效。
有什么方法可以让 IP Local 成为真实的吗?
我已经看到它在一些网站上运行。
以下是我制作的代码:

import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import javax.swing.JApplet;
public class PegaIP extends JApplet {
    @Override
    public void init() {
        try {
            getAppletContext().showDocument (new URL("javascript:UpdateIP(\"" + InetAddress.getLocalHost().getHostAddress() + "\")"));
        } catch (UnknownHostException | MalformedURLException e) {
            System.err.println("Ocorreu erro na criação da GUI");
        }
    }
}

【问题讨论】:

  • 不应该 “创建 GUI 时出错”“我们试图窥探您的位置失败,我们不会显示 GUI”?这些操作为最终用户提供了哪些功能?最终用户是否有足够的动力拥有该功能,他们要么 a) 允许受信任的代码支持该功能吗? b) 准确回答问题?
  • IP Address With Java 的可能重复项
  • 如果您连接到(同源)服务器,它将能够告诉您客户端的 IP 地址,尽管它很可能已经通过 NAT。
  • @AndrewThompson 就像我之前说的,我在 stackoverflow 测试了几个响应,但没有一个有效,您表示这是其中之一,不幸的是得到了相同的结果。我发送多少信息来打印,但这只是一个测试,还没有为最终用户准备好。不过还是谢谢。
  • @TomHawtin-tackline 你有一些文档或例子给我吗?就像我说的那样,我完全是 java 的菜鸟......

标签: java applet ip-address


【解决方案1】:

我的猜测是你需要允许特定操作工作,因为你在一个小程序中,文档指出:

如果有安全管理器,则使用本地主机名和 -1 作为其参数调用其 checkConnect 方法,以查看是否允许该操作。如果不允许该操作,则返回表示环回地址的 InetAddress。

要测试它是否正确,您应该在普通的 Java 应用程序中尝试它,如果没有返回 127.0.0.1,则问题存在于安全管理器中。你也可以打电话试试

public void checkConnect(String host, int port)

查看当前安全管理器是否引发SecurityException

阅读here 了解有关小程序及其权限的更多信息。

【讨论】:

    猜你喜欢
    • 2011-05-29
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2018-10-26
    • 2014-12-21
    • 2013-10-19
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多