回答
我想你需要在你的子網上的所有IP上掃描應用程序的端口。
什麼是可用的IP - 或者你的子網是什麼?
由於網絡設計爲對您的應用程序透明,因此恐怕無法確定這可能是不可能的。
所以,我會用蠻力:選擇你的IP並改變最後一個字節。可能太多了,但可能還不夠。
或者您發送廣播(通常將針對x.x.x.255)並查看誰的答案。 見Datagram Broadcasting和Multicasts。但我認爲這不再是TCP/IP。
不。這是一個非常糟糕的方法。多播是要走的路:廣播對於新業務來說不被認爲是可以接受的。當然,它仍然是IP,但你說的TCP只是單播。請參閱mDNS或SSDP在網絡上執行服務發現。 – 2012-06-02 15:44:41
網絡掃描可能很長,在無線網絡上甚至更長。如果您需要通過Java快速訪問它們,則可以在網絡上實施「會議點」服務器。此服務器偵聽預定義的端口,客戶端在啓動時在服務器上註冊,服務器可根據請求分發有關客戶端的信息。
HTH。
多播UDP是一個很好的方法。它用於支持通過本地IP網絡(UPnP和ZeroConf)自動發現網絡設備的兩種技術。
組播UDP不是TCP,但它仍然基於IP,所以使用相同的尋址機制,即IP地址。通常將其與無線電廣播進行比較,即多播發送者只需發送1條消息(即,它就像廣播),但只有「調入」到多播信道的客戶端纔會接收到它。
你可以在谷歌或維基百科對這些作爲首發快速搜索,但基本思路如下:
- 客戶端啓動時,它會發出多播UDP「你好」消息某些預先指定的多播地址和端口(例如UPnP使用239.255.255.250:1900)
- 現有客戶端正在偵聽指定地址和端口上的傳入多播「hello」消息 - 當客戶端收到一個消息時,它會向發送者
- 發送「hello」消息的客戶端從n上的每個現有客戶端接收響應etwork,現在知道
如果您正在尋找庫使用,UPnP的圖書館可往往是有點重量級和很多民間的一般不喜歡他們,每個客戶端的IP地址,所以ZeroConf的可能會更適合。我不知道這些東西的Java實現,但我相信你可以找到一些有點挖掘。
非常好的答案。要在mDNS和SSDP之間進行選擇,就發送數據包數而言,mDNS實際上比SSDP更重;兩者都有類似的發現模式;操作系統通常有一個mDNS守護進程,您可以將其掛接到(Bonjour或Avahi),而對於SSDP,您更有可能不得不推出自己的應用(Windows上除外)。 – 2012-06-02 15:48:31
- 1. 跨WiFi /域網絡的客戶端/服務器對等發現
- 2. Cocoa中的併發網絡客戶端
- 3. 多網絡請求&網絡客戶端
- 4. 使用3G和WIFI網絡的Android客戶端應用程序
- 5. 客戶端網絡堆棧
- 6. iphone網絡客戶端
- 7. 客戶端網絡服務
- 8. Qgis網絡客戶端/ Openlayers
- 9. Phpmyadmin Mysql網絡客戶端和終端客戶端的差異
- 10. 如何有效地ping和發現網絡上的所有客戶端?
- 11. 如何在網絡客戶端上從網絡服務器上創建文件
- 12. 的getUser不從GitHub上的網絡聊天客戶端4.0.4主網絡聊天客戶端
- 13. 在網絡瀏覽器中發送客戶端證書
- 14. 創建一個Skype網絡客戶端
- 15. Java網絡 - 客戶端和服務器
- 16. Python網絡客戶端編程庫
- 17. Java與網絡HTTP客戶端性能
- 18. 網絡(http客戶端)的boost asio庫
- 19. 網絡套接字,最大客戶端?
- 20. 客戶端 - 服務器網絡入門
- 21. 全功能的XMPP網絡客戶端
- 22. AWS EMR - Apache Flink網絡客戶端
- 23. C++服務器/客戶端網絡
- 24. 網絡TCP客戶端連接
- 25. IntelliJ網絡客戶端錯誤
- 26. 混合網絡/客戶端框架
- 27. 如何獲取網絡客戶端
- 28. Java網絡客戶端小程序
- 29. Axis網絡服務客戶端錯誤
- 30. Arduino網絡客戶端類不工作
作爲一個旁註,我可能會使用tcp連接到客戶端,但我並不意味着我需要使用tcp來查找客戶端 我還預計最終目標機器將處於通常的192.168.1.1類型主頁網絡,但我不會奢望假設這將成爲我的網絡,因此設置預定義的聯繫人服務器不是一種選擇 – 2009-07-21 13:42:33