网络编程学习方法和图书推荐
? ? ? ? 從事網絡編程有五年多了,寫過自己的Server,讀過大部分網絡庫libevent,redis, muduo等等,市面上的網絡用書大多讀過,給新人一些建議,主要是從事服務器網絡編程后端的同學。
?
? ? ? ? 如果你沒寫過網絡編程的代碼,也沒有這方面的知識,那么該如何下手呢?這個時候不需要盲目看書,先培養一下自己的興趣,了解TCP如何建立連接,TCP三次握手和四次握手的過程,有了這個,然后去了解socket方面編程的基本知識,socket的創建,綁定,連接,發送,接收,建立連接等api,學習完這些api,試著去寫一個單線程阻塞通信demo,客戶端發送數據,服務器接收數據,然后將數據返回給客戶端,客戶端收到后繼續發送,這樣簡單的echo服務器就寫出來了。
?
? ? ? ? ? 這是我做的一個小demo,可以參考下,但是不是echo,讀者可自己改為echo服務器。
? ? ? http://www.cnblogs.com/secondtonone1/p/5460942.html
?
? ? ? ?如果很多個客戶端連接過來怎么處理呢?這時需要了解多線程模式的網絡編程,你可以去了解accept原理,和線程創建處理新的連接。這樣就可以做出一個多線程echo的Server了。
?
? ? ? 這是我做的一個簡單的accept多線程服務器,讀者可自己改為echo模式
? ??http://www.cnblogs.com/secondtonone1/p/5461120.html
?
? ? ?有了這些基礎知識,你就可以深入了解網絡變成了,下一步要做的是了解TCP的socket緩存原理,阻塞原理,非阻塞的socket如何返回錯誤碼,錯誤碼的意義和如何處理,這些知識是你學習非阻塞多路復用的基礎,學完這些,可以學多路復用的幾種模型了,select,poll, epoll,iocp,kqueue等等,學的時候去補充自己不知道的一些TCP知識。多路復用學習后可以簡單的去寫一些多路復用服務器demo。
?
? ? ?這是我之前講過的epoll知識和自己寫的epoll demo
? ? ?http://www.cnblogs.com/secondtonone1/p/5367495.html
? ??http://www.cnblogs.com/secondtonone1/p/5432453.html
?
? ? 會寫多路復用服務器就可以了嗎?這只是開始,下面就要閱讀源碼和高性能的框架了,我推薦去讀一讀redis和libevent這兩個框架,對網絡編程提升很大,其中的緩存思想也很重要。這個時候你需要的是從框架的角度搭建一個高性能的服務器,需要了解事件堆,Reactor模式,Proactor模式,將不同的多路復用封裝為一個IOService,就像libevent的EventLoop,像boost asio的ioservice一樣。
? ? ? ?
? ? ? ? ?下面是我封裝的一個服務器,上傳到github了
? ? ? ??https://github.com/secondtonone1/betternet
?
? ? ? ? 這些都會了,也就是我現在的水平了,我現在在看一些網絡大神的思想和視頻,從他們的設計角度感受如何架構一個優秀的框架,建議大家看看陳碩的muduo網絡庫和編程視頻,能醍醐灌頂。我現在也在學一些其他的框架,主要是想觸類旁通,同時看看優秀的框架代碼,雖然自己寫不出太優秀的框架,至少可以開闊眼界,作為積累。
?
下面是推薦大家的網絡圖書:
?
? ? ?我推薦新手先看
? ??
???
? ? ? ?Linux程序設計(第4版)?
? ? ? ? ?
? ? ? ?Linux高性能服務器編程?
?
?
?
?
看過之后再看Richard的三本網絡書
? ? ? ? ??
這些都看過之后,需要實戰,實戰過程中可以看看
以及
陳碩的經驗之談,我現在在看的
?
這些都看過了,可以看看源碼
?
libevent 源碼下載地址:
?
http://libevent.org/
?
redis源碼下載地址:
?
http://www.redis.cn/download.html
?
boost asio 文檔和下載:
?
http://www.boost.org/doc/libs/1_63_0/doc/html/boost_asio.html
?
muduo網絡庫:
?
http://code.csdn.net/openkb/p-muduo
?
這些源碼都搞通了,就有了自己的方法和框架了,然后就自己闖蕩吧。
?這是我的公眾號,謝謝關注:
?
轉載于:https://www.cnblogs.com/secondtonone1/p/6700785.html
總結
以上是生活随笔為你收集整理的网络编程学习方法和图书推荐的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WinForm读取相对路径(项目文件)下
- 下一篇: spring-boot-maven-pl