我知道這個問題已經被問這裏,但沒有得到回答的設備的名稱和IP。獲取Wi-Fi網絡
我寫在我要顯示的名稱和每個IP地址和每一個連接到我的無線網絡設備,一個簡單的Java Swing應用程序。
我想表明這個名單中JFrame
。我在網上搜索了很多,但無法找到實現此目的的方法。請幫我拿出Java大師!
在此先感謝!
我知道這個問題已經被問這裏,但沒有得到回答的設備的名稱和IP。獲取Wi-Fi網絡
我寫在我要顯示的名稱和每個IP地址和每一個連接到我的無線網絡設備,一個簡單的Java Swing應用程序。
我想表明這個名單中JFrame
。我在網上搜索了很多,但無法找到實現此目的的方法。請幫我拿出Java大師!
在此先感謝!
我發現找一點點這個代碼後。它可以工作,但速度很慢,可能不是最好的方式,但它起作用。
import java.io.IOException;
import java.net.InetAddress;
public class NetworkPing {
/**
* JavaProgrammingForums.com
*/
public static void main(String[] args) throws IOException {
InetAddress localhost = InetAddress.getLocalHost();
// this code assumes IPv4 is used
byte[] ip = localhost.getAddress();
for (int i = 1; i <= 254; i++)
{
ip[3] = (byte)i;
InetAddress address = InetAddress.getByAddress(ip);
if (address.isReachable(1000))
{
System.out.println(address + " machine is turned on and can be pinged");
}
else if (!address.getHostAddress().equals(address.getHostName()))
{
System.out.println(address + " machine is known in a DNS lookup");
}
else
{
System.out.println(address + " the host address and host name are equal, meaning the host name could not be resolved");
}
}
}
}
幾件事情要注意,address.getHostAddress()返回192.168.0.xxx 和address.getHostName()返回該設備的名稱,比如 「Kevins-PC」
這是一個相當簡單的一段代碼,但我會快速瀏覽它。
它通過獲取本地主機IP地址(在普通家庭網絡上的IP地址爲192.168.0.xxx)開始,並將其存儲在byte []中,使其看起來像{192,168,0,xxx }。 然後創建一個循環從1開始要254(因爲這個代碼假定一個/ 24子網掩碼(255.255.255.0),但如果它的運行不同的子網掩碼,那麼它可能不是1-254)。 然後在for循環中,它將ip的第三個索引設置爲i。 然後它從該地址創建一個InetAddress。 ,然後嘗試在1000毫秒(1秒),以達到它,並且如果成功則它打印地址和表示其到達。 否則,如果機主機地址(192.168.0.xxx)不等於主機名(比如你的電腦像Kevins-PC的名稱),然後它說,機器在DNS查找這意味着它稱爲被發現在DNS查找中,但它不可訪問(所以它可能關閉或沒有連接,但它已經在以前),DNS是域名服務。 DNS基本上存儲信息(您的路由器可能會這樣做)。 最後,否則它只是說,它無法得到解決,這意味着它不是可達也不是發現看在DNS。
UPDATE
所以,如果你運行這個,你只是不斷收到類似「192.168.0.5/192.168.0.5主機地址和主機名是平等的,這意味着該主機名稱無法解析」 這意味着你的路由器(您的本地DNS)只是不存儲信息,或者這些設備只是選擇不提交他們的主機名到路由器上,這就是爲什麼你會不斷得到那個消息。據我所知,沒有辦法解決,因爲這些設備名稱字面上沒有存儲
謝謝你的幫助!我檢查了它。它顯示IP地址,但它不顯示連接設備的名稱。 'address.getHostName()'再次向我顯示IP地址。我如何獲取連接設備的名稱? –
嘗試再次運行它,我無法給出它爲什麼會起作用的原因,但它通常第二次運行 – MrWayFarOut
試試這個:)
import java.io.IOException;
import java.net.*;
import java.util.Vector;
public class search {
public static void main(String args[]) throws UnknownHostException{
Vector<String> Available_Devices=new Vector<>();
String myip=InetAddress.getLocalHost().getHostAddress();
String mynetworkips=new String();
for(int i=myip.length();i>0;--i) {
if(myip.charAt(i-1)=='.'){ mynetworkips=myip.substring(0,i); break; }
}
System.out.println("My Device IP: " + myip+"\n");
System.out.println("Search log:");
for(int i=1;i<=254;++i){
try {
InetAddress addr=InetAddress.getByName(mynetworkips + new Integer(i).toString());
if (addr.isReachable(1000)){
System.out.println("Available: " + addr.getHostAddress());
Available_Devices.add(addr.getHostAddress());
}
else System.out.println("Not available: "+ addr.getHostAddress());
}catch (IOException ioex){}
}
System.out.println("\nAll Connected devices(" + Available_Devices.size() +"):");
for(int i=0;i<Available_Devices.size();++i) System.out.println(Available_Devices.get(i));
}
}
*「我知道這個問題已經被要求在這裏,但它沒有得到答案。「*有什麼問題?提供一個鏈接。它可能沒有被回答,只是因爲沒有答案,再次詢問不會改變這一點。 –