㈠ 網路異常,讀取數據超時怎麼回事
這個我們從HTTP協議的底層分析,讀取數據超時分成三個情況:連接超時,讀超時與寫超時。大概的說就是因為網路不通或者時斷時持,導致服務端與客戶端在數據交換過程中產生各種異常的發生。
連接超時的定義是如果應用層不能及時接受已被TCP接受的連接,這些連接可能占滿整個連接隊列,新的連接請求可能不被響應而會超時。如果timeout的值小於三次握手的時間,那麼Socket連接永遠也不會建立。這種情況相當於你網路根本就沒連上。
讀超時的定義為如果對方進程崩潰、對方機器突然重啟、網路斷開,本端的read會一直阻塞下去,這時服務端設置超時不夠是非常重要的,否則調用read的線程會一直掛起。
寫超時的定義為當Socket的write發送數據時,如果網線斷開、對端進程崩潰或者對端機器重啟動,TCP模塊會重傳數據,最後超時而關閉連接。下次如再調用write會導致一個異常而退出。