我正在做某種客戶端 - 服務器連接。客戶端可以連接到多個服務器,因此需要知道該服務器是否在線。我不想先輸入所有的登錄信息,而是希望JLabel能夠顯示服務器是否在線。我如何檢查這一點,而不與服務器建立真正的連接?如何檢查服務器是否在線?
回答
,最好的辦法是讓服務器真正的連接,並要求它,如果它是在線,使用盡可能接近實際使用的方法服務器。其他方法創建獨立的失敗模式和不同的方法,必須單獨維護,一個可能會失敗,另一個可能會失敗。
想想像代理和防火牆的東西。爲什麼要讓自己和每個需要使用系統的人都感到困難?除非你沒有告訴我們有什麼不尋常的事情,否則沒有必要創建一個完全不同的訪問方法來測試可用性。
由於客戶端使用服務器端語句'ServerSocket.accept()'的服務器,並且它在連接上創建了一個新的線程,所以我不希望發生這種情況,只是爲了測試連接。 一般來說,因爲這是從Minecraft Bukkit服務器運行的,所以我想可能有客戶端連接。 – Creator13 2013-05-12 18:58:34
然後當服務器不在線時(例如,如果進程沒有運行),並且被告知多次不在線時(例如,如果在代理服務器或防火牆後面),服務器會多次聯機阻止ICMP回聲)。 – 2013-05-12 19:09:27
我不知道是否可以使用java ping服務器。但是您可以嘗試在您的Main的構造函數中ping服務器的ip,並且如果它返回回顯,請使標籤更改其值。
注意,這將檢查服務器是否可達,不是是否與特定URL /服務。爲此,你最好做一個測試請求。
嘗試這樣的事情來ping它:
InetAddress address = InetAddress.getByName("address");
if (address.isReachable(3000))
label.setName("online")
這是一個危險的建議。首先,你不知道他的客戶機 - 服務器協議是否可以被委託。如果是這樣,客戶端在代理服務器後面將會失敗。如果服務器位於不傳遞ping命令的防火牆之後(或者服務器本身不回覆它),它也會失敗。 – 2013-05-12 18:39:51
這也是一個不正確的建議。如果主機啓動並且服務關閉,它將返回誤報。 – EJP 2013-05-13 01:53:41
只需連接。
發現任何資源是否可用的最佳方法是嘗試使用它。這適用於網絡連接,文件,任何你喜歡的。編寫其他內容如isReachable()
,exists()
,isWritable()
等的輔助測試時,最好重複使用該資源時系統將要執行的操作,最壞的情況下執行不同的操作,以產生不同的結果。
在任何一種情況下,您都會介紹一個時間窗口,在此期間可用性可能會在任一方向發生變化。
- 1. 檢查node.js服務器是否在線?
- 2. Javascript:檢查服務器是否在線?
- 3. 檢查LDAP服務器是否在線
- 4. 如何快速檢查SimpleXMLRPCServer服務器是否在線?
- 5. Jquery如何檢查服務器是否在線ASP.NET MVC
- 6. 檢查一個Minecraft服務器在Java中是否在線?
- 7. 如何檢查服務和服務器是否可用?
- 8. 檢查一個遊戲服務器是否在線nodejs
- 9. SQL Server很慢檢查鏈接服務器是否在線
- 10. Android - 檢查外部服務器是否在線
- 11. 檢查socket.io服務器是否從客戶端在線
- 12. Android檢查遠程服務器是否在線
- 13. Xcode iPhone編程檢查服務器是否在線
- 14. 檢查用戶目前是否在線流星服務器
- 15. 是否有檢查WCF服務是否在線的示例?
- 16. 如何檢查smtp服務器(如gmail.com/hotmail.fr)是否存在?
- 17. 如何檢查服務是否停止
- 18. Apple GameCenter:如何從遊戲服務器檢查playerId是否有效(和在線)
- 19. 如何檢查SQL服務器是否存在?
- 20. 如何檢查FTP服務器上的文件是否存在?
- 21. 如何檢查服務器連接是否存在?
- 22. 如何檢查JBoss是否在Unix服務器上運行?
- 23. 如何檢查Redis服務器是否正在運行
- 24. 如何檢查郵件服務器是否存在?
- 25. 如何檢查外部服務器上是否存在文件
- 26. 如何檢查文字是否存在於服務器端?
- 27. 我如何檢查服務器是否在android中回覆?
- 28. 如何檢查Web服務器上是否存在文件
- 29. 如何檢查Sql服務器中是否存在約束?
- 30. 如何檢查FTP服務器上是否存在文件?
什麼樣的客戶端 - 服務器連接?它是否可以代理(如HTTP)? – 2013-05-12 18:39:19
我不太瞭解網絡,但它是使用套接字的連接。 – Creator13 2013-05-12 18:53:56
然後,沒有冒犯,但你正確完成這項工作的機率是相當低的。 – 2013-05-12 19:08:40