客户端网络库实现真的很简单吗?
生活随笔
收集整理的這篇文章主要介紹了
客户端网络库实现真的很简单吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問:你打算怎樣實現客戶端的網絡層?
答:對于TCP協議來說無非就是connect,send,recv唄。
問:那你是否考慮到這種情況,你同時或者先后發過去兩個網絡請求,你怎么確定你收到回復是哪個請求的?
(其實問到這時有些同事就開始不理解了,我會給他們解釋網絡傳輸和服務器處理不是串行的,往往會出現你后發的請求卻先收到回復,客戶端 多線程情況下更為常見。當然也有有辦法的。)
答:那我對每一個請求加一個唯一標識,這樣我就可以分辨出來了。
問:你有沒有考慮過由于connect,send,recv...這些系統API都是阻塞的,如果沒有限制條件,會讓你的一個請求卡住很長時間或者永遠卡住?
問:你有沒有考慮過短連接請求,長連接請求,服務端推送消息如何實現?
問:你有沒有考慮過各種網絡錯誤和異常的監控和處理,比如TCP長連接網絡斷開后的自動重連?
問:你有沒有考慮過如果你把網絡層或者網絡數據層和前臺業務和界面混雜在一起后的代碼混亂復雜度?
問:你對TCP了解多少,僅僅是會用網絡編程的API還是知道TCP還擁有一些諸如TIME_WAIT、TCP_NODELAY...的狀態或特性,你知道經常說的粘包是怎么回事嗎?
總結
以上是生活随笔為你收集整理的客户端网络库实现真的很简单吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络编程释疑之:TCP协议的“流”特性
- 下一篇: UDT协议深入解析