2012-09-28 110 views
5

我有一個連接到服務器的紅寶石tcpsocket客戶端。重新連接tcpsocket(或如何檢測關閉的套接字)

如何在發送數據之前檢查套接字是否已連接?

我是否試圖「拯救」一個斷開連接的tcpsocket,重新連接然後重新發送?如果是這樣,有沒有人有一個簡單的代碼示例,因爲我不知道從哪裏開始:(

我很自豪,我設法得到一個持久連接的客戶端tcpsocket在rails中,然後服務器決定殺死客戶端而這一切都土崩瓦解;)

編輯

我用這個代碼,以避開一些問題 - 它會嘗試重新連接,如果連接不上,但不會處理,如果情況服務器關閉(它將繼續重試)。這是正確方法的開始嗎?由於

def self.write(data) 
    begin 
    @@my_connection.write(data) 
    rescue Exception => e 
    @@my_connection = TCPSocket.new 'localhost', 8192 
    retry 
    end 
end 

回答

1

我通常在這些類型的情況下做的就是跟蹤連續再試在變量中,有設定重試車頂其他一些變量。一旦我們達到屋頂,拋出一些類型的異常,表明存在網絡或服務器問題。您當然想要成功重置重試計數變量。

+0

此外,套接字上應該有一個封閉的方法。我有點生疏,但很容易在irb/pry中測試/確認 –