2011-01-25 50 views
0

我們有一個Java應用程序運行在便攜式設備上,我們正在使用的JVM(CReMe)似乎有一個錯誤,它會緩存負面的DNS查找,即使我們告訴它不要。因此,當我們嘗試連接到我們的服務器,並且由於網絡連接尚未建立而導致DNS查找失敗時,應用程序被阻止,因爲即使連接恢復,它也不會再次執行查找。在Java中,如何在不使用DNS的情況下測試網絡連接?

我們已經嘗試通過打開一個Socket來硬編碼的IP地址進行測試,但顯然不能保證給定的IP地址將來不會改變。任何人都可以提出另一種方式來驗證我們有網絡連接嗎?

回答

1

您可以擁有一個IP列表並嘗試打開一個連接。它們可以是局域網上的機器的IP,也可以是Google或Facebook的IP。

如果無法連接到列表上的任何IP,則可以假定網絡已關閉。

網絡啓動後,您可以使用DNS查找來更新列表。

+0

我喜歡這個解決方案,因爲它增加了我們已經試過的解決方案的穩健性。但是,它確實增加了一點複雜性。 – 2011-01-26 00:36:25

1

您可以嘗試自定義DNS客戶端,如dnsjava

+0

我們會給你一個機會。希望它能在我們的設備/ JVM上運行正常。如果是這樣,我認爲這將是我們正在尋找的解決方案。 – 2011-01-26 00:37:19

+0

出於某種原因(可能是CReME JVM),DNSJava無法在我們的設備上工作。出於這個原因,我們將使用IP地址解決方案列表。如果我能接受這兩個答案,我會的。 – 2011-01-26 21:50:31

0

也許你可以嘗試使用Google的DNS服務器?懷疑他們會永遠改變,而且很確定他們通常會上來:)

8.8.8.8 
8.8.4.4 
相關問題