在前面幾篇中,我給大家介紹了socket的相關知識,也給出了詳細的代碼,從socket的基本介紹,到IO多路復用,以及粘包拆包,最后到心跳包問題。總的來說大概都把socket網絡編程中能碰見的問題都講了,但肯定講得不夠深入,會有一些遺漏,如果有哪些知識點技術點的遺漏,歡迎大家指出,本人虛心接受。

現在我將socket網絡編程前面幾篇講的內容重新梳理一遍。
《socket網絡編程(一)——初識socket》。主要介紹了我們為什么需要socket,以及socket的相關函數,掌握這些函數你并不能寫出很好的網絡編程的代碼,但是不掌握這些,你絕對寫不出來。這些函數是socket網絡編程的基石,任何復雜的網絡通信底層肯定都有這些函數。
《socket網絡編程(二)——實現持續發送》。要在網絡通信的過程中持續地發送消息,而服務不會斷掉,這個是必須掌握的。以及在持續發送的過程中碰見的一些怪異問題,該篇幅中有給大家介紹,以及給出了解決辦法。
《socket網絡編程(三)——select多路復用問題》。當有多臺客戶端的時候,我們又該如何通信呢?如何準確地把消息發到對應的客戶端呢?這些都是多路復用該考慮的問題,這篇文章里通通都會給大家介紹。
《socket網絡編程(四)——epoll多路復用問題 》。當服務達到了百萬級、千萬級的并發的時候,select多路復用就幾乎是無能為力了,即使能做,也是影響效率,這是他的底層機制所決定的。所以就需要epoll多路復用了,如果你想搭建一個千萬級的并發的系統,那么網絡通信的底層必須是要用epoll。
《socket網絡編程(五)——粘包拆包問題 》。TCP協議的通信機制導致了通信過程中會發生粘包和拆包的問題,這篇文章給大家介紹了發生的原因以及解決的辦法,也給出了詳細的代碼。
《socket網絡編程(六)——心跳包問題 》。心跳包也是在socket網絡編程中要考慮的問題,主要用于檢測客戶端與服務端的連接是否還在,具體的實現大家可以參考這篇文章。
以上就是socket網絡編程中需要掌握的地方,每篇文章都給出了詳細的代碼步驟,實踐會偏多,理論知識點可能有點偏少。像TCP三次握手四次揮手這樣經典的過程就并沒有講,網絡講解非常多,大家可以自己去搜搜看。后期如果有時間,我再來闡述。
毫不夸張地說,只要是為了實現網絡通信,不管是C++、JAVA、PYTHON、LUA還是其他的語言,也不管是多么復雜難懂的框架,他們的底層框架都考慮到以上的東西,所以只要掌握了以上的理論知識,都可以很好的駕馭各種框架,甚至未來你可以寫出屬于自己網絡通信的框架來,這就是所謂的造輪子能力。
更多精彩內容,請關注同名公眾:一點筆記alittle
