對於我的項目,我希望獲得所有可用廣播地址的列表,以便我可以廣播請求,並且位於未指定網絡中其他計算機上的其他應用程序將響應並獲取列表我(現在用邁克的貢獻小修改版)想出了這個:在Java中檢測所有可用網絡的廣播地址
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然而,當涉及到無線局域網,它只是跳過第二while循環一個步驟,因爲後有address
等於零,即使當我用System.out.println(interfaceItem)
只是查看接口正在通過它寫無線局域網的名稱和我的IP相應到網絡。
編輯1: This是172.16.1.104是我的IP在無線網絡中的輸出。這個問題只出現在我用Wifi的筆記本上。輸出來自我的筆記本,我主要使用無線,有時我使用UTP與我的朋友連接。我的筆記本上還有一個VirtualBox的網絡接口。
你能告訴我它有什麼問題嗎?謝謝!
注意:事實證明,這可能是我的筆記本的問題,特別是對於其他人而言,我喜歡這樣的問題:-)看起來像是死路一條,但感謝無論如何幫助:-)
仍然愛你! ;-)
也許,只有一個內循環迭代是可以的,因爲你的網卡只有一個IP主機地址? – 2011-02-03 15:28:14
我承認它不需要通過InterfaceAdresses,因爲在那裏,如你所說,應該只有一個,如果有的話,但即使現在也行不通? – Martin 2011-02-03 17:43:12