經過多年的網絡編程實踐之后,個人覺得初學網絡編程者可以從以下幾個步驟開展:
1)下載一個可以互動的學習工具,通過這個與這個工具互動,我們可以及時的學到每個api的結果如果。我個人強烈推薦一個互動好工具,即python,下載地址
http://www.python.org 對于有c/c++或java基礎的朋友通過一兩個禮拜的時間就可以上手了,另外個人建議初學者可以學習
dive into python。
2)掌握網絡編程中會用到的幾個基本概念和內涵,比如IP地址,port號,socket等
3)記住和消化網絡編程C/S模型,把server和client端編程的常用模式理解和消化
4)花幾天時間學習socket api集,api集可以分為下面幾大類:
創建 socket bind listen accept
收發 read/recv/recvfrom write/send/sendto
關閉 close shutdown
參數 getsockopt/setsockopt
地址 gethostbyaddr getaddrbyhost,...
在學習這些api時候,可以先關注在函數功能,參數意義上
5)結合python互動平臺,實踐socket api的用法,比如socket函數怎么使用,bind怎么使用等等。在互動過程中,我們可以變換參數,看看調用結果如何。比如,
創建一個tcp socket的語法如下:
socket(AF_INET,SOCK_STREAM)
創建一個udp socket的語法如下:
socket(AF_INET,SOCK_DGRAM)
6)學習socket server端編程實現簡單規約比如echo,time等,然后通過cmd中的telnet來測試。
7)學習I/O模型,比如阻塞、非阻塞和反應式(select,poll,WaitForMultipleObject)等
8)學習Richard Stevens的《Unix網絡編程》,深入學習其中的api原理以及服務端設計原理,并通過代碼編寫。
9)下載高性能網絡編程框架
twisted,筆者強烈推薦,它將使你的網絡編程效率提高10倍以上。
10)學習設計模式、操作系統知識比如線程、進程、同步等。