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