【问题标题】:how to get the ip address of the connected interface如何获取已连接接口的ip地址
【发布时间】:2014-05-26 05:10:40
【问题描述】:

我们如何使用java代码获取IP地址的方式很清楚,很多关于这个主题的问题都得到了解答。

但假设你的机器上有 Vmware 或 VirtualBox,那么你将拥有额外的虚拟网卡,每个网卡都有自己的 IP 地址。

执行一个小程序时,结果类似于 192.168.xx,它属于我的一个虚拟网络适配器。 但使用“我的 IP 是什么”的结果就像 197.x.x.x

那么我怎样才能得到连接接口的IP地址呢?

【问题讨论】:

  • 离题;属于Super User
  • 当执行what'小程序'时,what的结果是192.168.x.x?
  • 在执行 InetAddress.getHostAddress() 时,结果类似于 192.168.x.x 但问题似乎可以通过使用逻辑表达式处理“whatismyip”的 HTML 代码来解决

标签: java networking ipv4


【解决方案1】:

这应该可以解决问题:

import java.io.*;
import java.util.*;

public class ExecTest {
public static void main(String[] args) throws IOException {
    Process result = Runtime.getRuntime().exec("traceroute -m 1 www.amazon.com");

    BufferedReader output = new BufferedReader(new            InputStreamReader(result.getInputStream()));
    String thisLine = output.readLine();
    StringTokenizer st = new StringTokenizer(thisLine);
    st.nextToken();
    String gateway = st.nextToken();
    System.out.printf("The gateway is %s\n", gateway);
}
}

感谢 Chris Bunch 来自:How can I determine the IP of my router/gateway in Java?

你好!

【讨论】:

  • 不是真的...如果您距离外部网关有两个(或未知数量的)跃点怎么办?
  • 完美的解决方案来自N30提到的链接。它根据正则表达式从“whatismyip”html 代码中搜索 IP 地址。老实说,这是一个天才的解决方案问候!
【解决方案2】:

您的接口 IP 192.168.x.x 是您的本地适配器接口。前缀 192.168 表示这是一个 私有 不可路由地址,仅在 NAT 防火墙后有效。

WhatIsMyIP 返回的 IP 是您访问 Internet 的防火墙/网关的外部地址。除非您的计算机直接连接到 Internet,否则这两个地址永远不会相同。

【讨论】:

  • 这就是重点!有没有办法使用java代码获取这个外部地址
猜你喜欢
  • 2016-07-30
  • 2010-12-26
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2011-11-09
  • 1970-01-01
相关资源
最近更新 更多