2012-05-25 46 views
2

我正在使用TClientSocket和TServerSocket與服務器通信問題是,有時連接丟失或者由服務器發給我以下例外:WsaSend,訪問衝突等錯誤或由客戶端:Asychronious套接字錯誤。保持打開的連接TCP/IP

女巫是最好的方法從這些錯誤中恢復並保持連接打開沒有mather什麼?

+0

我強烈建議印,不知道插座組件仍然保持着... – ComputerSaysNo

+0

爲什麼你認爲改變Indy會解決這個問題嗎? –

回答

5

沒有「無論如何保持連接打開」這樣的事情。如果電纜被切斷怎麼辦?您可以做的最好的做法是在某個時間間隔內發送心跳,讓中間路由器知道您仍然對使用該連接感興趣,並小心處理所有錯誤,並在必要時重新建立連接。

1

大問題...您收到的是WSAECONNABORTED異步套接字錯誤10053)。

我如何防止它在我的代碼中發生?好吧,有一種叫做Keepalive的東西,如果你仔細看看這個名字,Keep-Alive,它意味着保持連接活着,只是發送空數據到連接(可以是單向),這就是全部......

我做了一個計時器(命名爲TmrKeepAlive)並將其間隔設置爲5000ms(5秒),More info on KeepAlive

編輯:另外,如果你不想寫自己的保留機制,檢查this