![](/img/trans.png)
[英]How can I detect if a network card is not connected with Java without delay?
[英]Detect computers connected on network via android java
我正在編寫一個Android應用程序,通過套接字連接與Windows服務進行通信。 代碼正在運行,但我想添加檢測本地網絡上連接的設備的功能,以便應用程序可以確定哪台計算機正在運行我想要的Windows服務,我正在使用下面的代碼,我也是從這個網站獲得的。 我的問題是下面的代碼只檢測Android設備,並沒有檢測到我的筆記本電腦。 我可以從筆記本電腦上ping我的設備並從我的設備上ping我的筆記本電腦,那么該怎么辦呢?
public void checkHosts(String subnet) {
int timeout = 1000;
for (int i = 1; i < 254; i++) {
String host = subnet + "." + i;
try {
if (InetAddress.getByName(host).isReachable(timeout)) {
System.out.println(host + " is reachable");
System.out.println("Host Name: "
+ InetAddress.getByName(host).getHostName());
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
InetAddress.isReachable()不是很可靠。 如果ICMP消息被阻止,您將無法得到答案。
您可以做的是發送廣播消息。 您的服務器應用程序必須偵聽此消息並回答它。 這樣您就可以獲得服務器IP地址,並可以連接到它。 並且您只需發送一條消息即可到達子網中的所有主機。
謝謝大家,我最終創建了一個到網絡中每個IP的套接字連接,並從套接字顯示主機名。 它向我展示了它們是Android設備還是Windows機器的所有設備。
當然,因為我在設備和計算機上使用套接字監聽端口8000,所以使用套接字將給出結果IF和ONLY如果兩端都在同一端口上監聽,我只關心運行我的服務的計算機。
我非常感謝所有的建議和幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.