在 Java 中检测所有可用网络的广播地址
对于我的项目,我想获得所有可用广播地址的列表,以便我可以广播请求,并且位于未指定网络中其他计算机上的其他应用程序将响应并获取列表(现在使用带有Mike贡献的小修改版本)提出了以下结果:
private ArrayList<InetAddress> getBroadcastAddresses() {
ArrayList<InetAddress> listOfBroadcasts = new ArrayList();
Enumeration list;
try {
list = NetworkInterface.getNetworkInterfaces();
while(list.hasMoreElements()) {
NetworkInterface iface = (NetworkInterface) list.nextElement();
if(iface == null) continue;
if(!iface.isLoopback() && iface.isUp()) {
System.out.println("Found non-loopback, up interface:" + iface);
Iterator it = iface.getInterfaceAddresses().iterator();
while (it.hasNext()) {
InterfaceAddress address = (InterfaceAddress) it.next();
System.out.println("Found address: " + address);
if(address == null) continue;
InetAddress broadcast = address.getBroadcast();
if(broadcast != null) listOfBroadcasts.add(broadcast);
}
}
}
} catch (SocketException ex) {
return new ArrayList<InetAddress>();
}
return site;
}
它适用于reqular LAN,但是当涉及到WiFi LAN时,它只是跳过了一个步骤后的第二个而循环,因为即使我曾经只是查看正在通过的接口,它也写了无线LAN的名称和我的IP对应于网络。address
System.out.println(interfaceItem)
编辑1:这是输出,其中172.16.1.104是我在无线网络中的IP。问题只出现在我带有Wifi的笔记本电脑上。输出来自我的笔记本电脑,我主要使用无线,有时我使用UTP与我的朋友联系。我的笔记本上还有一个VirtualBox的网络接口。
你能告诉我它有什么问题吗?谢谢!
注意:所以事实证明,这可能特别适合我的笔记本,代码通常适用于其他人,我喜欢这种问题:-)对我来说似乎是一个死胡同,但无论如何感谢帮助:-)
仍然爱你!;-)