簡體   English   中英

通過android java檢測網絡上連接的計算機

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM