栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何用Java确定Internet网络接口

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何用Java确定Internet网络接口

在我的笔记本电脑上(运行Windows 7,安装了Virtual
Box及其网络接口),以下代码将打印出我的无线接口的名称以及本地地址。它在一天结束时使用暴力手段,但只会尝试并实际连接到被认为是最佳候选人的地址。

// iterate over the network interfaces known to javaEnumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();OUTER : for (NetworkInterface interface_ : Collections.list(interfaces)) {  // we shouldn't care about loopback addresses  if (interface_.isLoopback())    continue;  // if you don't expect the interface to be up you can skip this  // though it would question the usability of the rest of the pre  if (!interface_.isUp())    continue;  // iterate over the addresses associated with the interface  Enumeration<InetAddress> addresses = interface_.getInetAddresses();  for (InetAddress address : Collections.list(addresses)) {    // look only for ipv4 addresses    if (address instanceof Inet6Address)      continue;    // use a timeout big enough for your needs    if (!address.isReachable(3000))      continue;    // java 7's try-with-resources statement, so that    // we close the socket immediately after use    try (SocketChannel socket = SocketChannel.open()) {      // again, use a big enough timeout      socket.socket().setSoTimeout(3000);      // bind the socket to your local interface      socket.bind(new InetSocketAddress(address, 8080));      // try to connect to *somewhere*      socket.connect(new InetSocketAddress("google.com", 80));    } catch (IOException ex) {      ex.printStackTrace();      continue;    }    System.out.format("ni: %s, ia: %sn", interface_, address);    // stops at the first *working* solution    break OUTER;  }}

(我已

isReachable(...)
根据MockerTim的答案更新了我的答案。)

需要注意的一件事。

socket.bind(...)
如果我尝试连续太快地运行我的代码(例如连接清理得不够快),就会对我说地址和端口已经被使用了。
8080
应该是一个随机端口。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/495956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号