話題背景:
在實際的開發過程中,TCP長連接對於我們的服務程序來說需要同時滿足兩個條件,1個是TCP保持連接,另外一個最關鍵是有通信數據。
在開發過程中可能會遇到以下幾種問題:
1、TCP連接了, 但客戶端沒有實際數據通信;
2、TCP連接了,但服務器端沒有給客戶端發送實際數據通信;
3、TCP連接了,客戶端前期發送數據,但後期長時間沒有發送數據;
4、TCP連接後,數據通信一段時間後,客戶端突然斷電;
5、TCP連接後,服務器端發送數據後,客戶端沒應答;
(如果還有其他可能性,歡迎補充)
那此時,判斷TCP連接是否正常,需要從服務器端和客戶端兩方面入手去考慮。針對以上問題, 我們逐個分析:
1、TCP連接了,但客戶端沒有實際數據通信,如果不處理這個問題,或許對一些小的應用開發沒特別大的問題,但隨着連接的客戶端增多還有服務器資源的減少,服務端的資源會被大量佔用,不利於應用的穩定性;所以此時需要增加一個機制:當客戶端連接後,如果再設定時間內無數據通信,則視爲無效連接,並從服務器端主動斷開和該客戶端的連接;
2、TCP連接了,但服務器端沒有給客戶端發送實際的數據通信,一般比較少出現這種情況,除非服務器端的功能還沒做好。 那此時客戶端登錄註冊後無應答,則需要重新連接服務器試着發送通信數據,看服務器是否應答,如多次未應答,則在客戶端顯