1

如果我在大学,我被要求激活一段代码。所以我需要找到与我的大学 iP 相匹配的 iP。想知道如何在java中做到这一点?我已经尝试过环回接口。

4

3 回答 3

3

通过在每个接口上使用NetworkInterface.getNetworkInterfaces()和调用getInetAddresses(),您可以看到分配给您计算机的所有 IP 地址。要检查您的大学范围内是否有 IP,您可以执行以下操作:

boolean onCampusNetwork() {
    for(Enumeration<NetworkInterface> ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();) {
        NetworkInterface iface = ifaces.nextElement();
        for(Enumeration<InetAddress> addresses = iface.getInetAddresses(); addresses.hasMoreElements;) {
            InetAddress address = addresses.nextElement();
            // return true if address is in the university's range; something like:
            if(address.toString().startsWith("10.0")) {
                return true;
            }
        }
    }
    // None of the IP addresses were in the university's range.
    return false;
}

我还没有运行此代码,但它应该可以满足您的需要。

于 2009-08-07T20:34:17.143 回答
0

不应该有某种用于自动代理发现和配置的协议吗?你的大学有这个设置吗?如果您的代码发现了正确的设置并且可以选择覆盖这些设置,那就更好了。

于 2009-08-07T20:44:23.270 回答
0

有各种各样的网站可以为您提供公共 IP(或网关的公共 IP,我认为这就是您想要的)。您可以告诉程序与其中一个站点建立 HTTP 连接,并获取包含信息的页面。由于这些站点具有非常可预测的格式,因此使用一两个正则表达式很容易解析结果。这仅在您有互联网连接时才有效。

或者,您可以让程序尝试连接到您大学的一个 Intranet 服务器。如果它可以连接到外部世界无法访问的站点,则它位于 LAN 上。

于 2009-08-07T20:45:41.303 回答