相信開發socket的初學者肯定會遇到以下一些常見的問題:
1.客戶端接收數據超時導致客戶端無響應,一段時間後,彈出進程錯誤?
問題分析:造成改問題主要有兩個方面,一個是服務器繁忙,沒有及時的返回數據;二是服務器有返回數據,但是由於網絡繁忙,客戶端沒能及時接收到數據。開始,程序在等待數據接收,從用戶的視覺則是卡機狀態,當長時間沒有響應後,在系統保護機制下,系統會自動發送一個singal3信號殺掉該進程,此時會彈出一個詢問是否關閉程序的進程錯誤對話框。
問題解決:自設超時時間,避免延時過長造成卡機的假現象,同時逃避系統的查殺。
使用異常處理方法,Catch到超時錯誤,並通知用戶訪問超時。
2.服務器接收數據超時導致服務器崩潰:
問題分析:
造
成該
問
題主
要
是由
於
網絡繁忙,和網絡信號不
好,導致服務器一直處在
數據接收的狀態,超出服
務器的超時時間後,服務
器會崩潰。
考
慮到
該
問題
的
出現
對
用戶是隱形的,即出現該
問題時,用戶不會察覺到
是服務器出現崩潰,而只
會看到網絡繁忙的提醒。
造
成該
問
題主
要
是由
於
網絡繁忙,和網絡信號不
好,導致服務器一直處在
數據接收的狀態,超出服
務器的超時時間後,服務
器會崩潰。
考
慮到
該
問題
的
出現
對
用戶是隱形的,即出現該
問題時,用戶不會察覺到
是服務器出現崩潰,而只
會看到網絡繁忙的提醒。
造成該問題主要是由於網絡繁忙和網絡信號不好,導致服務器一直處在數據接收的狀態,超出服務器的超時時間後,服務器會崩潰;考慮到這問題的出現對用戶是隱形的,即出現該問題時,用戶不會察覺到是服務器出現崩潰,而只會看到網絡繁忙的提醒。
解決辦法:使用子線程
3.IP服用是服務器崩潰:
解決辦法:服務器採用多線程機制;
儘量避免特殊的網路環境;
造
成該
問
題主
要
是由
於
網絡繁忙,和網絡信號不
好,導致服務器一直處在
數據接收的狀態,超出服
務器的超時時間後,服務
器會崩潰。
考
慮到
該
問題
的
出現
對
用戶是隱形的,即出現該
問題時,用戶不會察覺到
是服務器出現崩潰,而只
會看到網絡繁忙的提醒。