我正在使用tcp套接字編寫服務器/客戶端應用程序,我的問題是如何檢測半開連接,我計劃使用keep-alive,但有人建議我自己執行協議,所以我現在的計劃是:在tcp中檢測客戶端斷開連接
在服務器端:
服務器將等待10秒,客戶端發送一些數據,如果在給定的時間服務器沒有從客戶端收到任何消息,服務器會將客戶端標記爲斷開連接,否則,如果服務器從客戶端接收到消息,它將重新設置定時器。
:
客戶端將發送每10秒的消息,但是,如果服務器請求從客戶端的一些數據(例如,如果該計數器是在5秒內,並且客戶端一些數據發送到所述服務器)客戶端中的定時器將重新設置爲0。
簡而言之,在收到最後一封消息以使連接關閉後,協議將從0到10進行計數。
我現在的問題是,這樣好嗎?或即時做錯了?或者這是一個壞主意?或者我會在客戶端和服務器上遇到任何問題/錯誤?或者我的連接會被這個方法的防火牆,NAT等阻塞?
謝謝。
thx爲答案,我有另一個問題,如果我用這種方式來檢測客戶端斷開連接,它會強調服務器/使用大量的資源,如果我有很多客戶端? –