2015-05-03 35 views
0

我需要一些幫助,以解決以下問題:如何在沒有服務器響應的情況下建立一個穩定的tcp-socket連接?

我在構造函數中打開一個tcp-socket,然後繼續通過對象輸出流向服務器提供一個對象。我無法控制服務器,也不會收到任何迴應。

如何檢測到連接丟失?試圖寫入時,我總是會得到IOExeption-Error?因爲根據javadoc一旦連接成功,大部分檢查對我來說基本上是無用的。

此外,重新連接套接字的最佳方法是什麼?將參考設置爲「空」,然後創建一個新的?

這是我目前的做法:

我有一個狀態列表中,我有以下幾種狀態: SocketSuccess; SocketFailure; MessageSuccess; MessageFailure;

我的想法有點像狀態機,所以先檢查最後狀態是什麼。如果連接成功或最後一條消息成功,則嘗試發送消息。當我得到一個IOExeption,然後設置狀態MessageFailure,在本地保存消息,直到我再次獲得成功的連接。

或者是否有這種情況下推薦的模式?

+0

什麼'因爲根據javadoc一旦連接成功,大部分檢查對我來說基本上是無用的'是什麼意思?無用爲什麼? – EJP

回答

0

清除你所有的d。。如果與服務器的連接丟失,則客戶端將拋出IOException並且會終止應用程序,但是如果處理了異常並嘗試重新連接服務器並重新建立輸入輸出流,則您的消息功能將再次啓動。您正在使用的預定義消息將僅在服務器和客戶端之間存在連接時纔會傳播。因此,當連接丟失時,您將得到IOException,並且當您處理該異常並嘗試重新連接時,應該建立一個新的輸入輸出流,該流將攜帶您的消息傳遞服務。

+0

在那裏有沒有任何需要說一遍兩遍兩遍的一切? – EJP

+0

解釋,然後結論最終我只是想澄清。 –

相關問題