2014-05-25 17 views
0

我的應用程序有一個Tclientsocket構件實現連接到服務器正常 但是當服務器關機並重新運行 我的應用程序不知道連接到它如何找出Tclientsocket構件實現激活

我用這個代碼來解決問題

if not ClientSocke.active then 
    begin 
     clintsocke.open(); 
    end 
else 
    Exit(); 

但是這個代碼不解決我的問題,積極屬性爲false總是 我怎樣才能解決這個問題

回答

0

檢查Active=false會工作很好。但你也應該處理OnDisconnectOnError事件。特別是OnError,你可以Close()這個插座。另外,如果可能的話,您應該在您的通信協議中實現ping/keepalives,以便您可以檢測服務器何時停止響應命令。如果您發送一個命令並獲取套接字錯誤,請關閉套接字。如果您發送命令並且沒有及時得到響應,請關閉套接字。

如果這不可行,那麼您至少應該通過setsockopt()啓用TCP保持活動,以便操作系統可以在停止響應的套接字上報告錯誤。