Hey! Socket 編程讓你沮喪嗎?從 man pages 中很難得到有用的信息嗎?你想 跟上時(shí)代去做一做 Internet 程序,但是為你在調(diào)用 connect() 前的 bind() 的結(jié)構(gòu)而愁眉不展?…
好了,我現(xiàn)在已經(jīng)來(lái)了,我將和所有人共享我的知識(shí)了。如果你了解 C 語(yǔ)言并想穿過(guò) 網(wǎng)絡(luò)編程的沼澤,那么你來(lái)對(duì)地方了。
--------------------------------------------------------------------------------
這個(gè)文檔是寫成一個(gè)指南,而不是參考書。如果你剛開(kāi)始 socket 編程并想找一本入門書,那么你是我的讀者。這可不是一本完全的 socket 編程書。
--------------------------------------------------------------------------------
平臺(tái)和編譯器
這篇文章中的大多數(shù)代碼都在一臺(tái) Linux PC 上用 GNU 的 gcc 成功編譯過(guò)。 而且他們?cè)谝慌_(tái) HPUX 上用 gcc 也成功編譯過(guò)。但是注意,并不是每個(gè)代碼 片段都獨(dú)立測(cè)試過(guò)。
--------------------------------------------------------------------------------
目錄:
什么是套接口?
Internet 套接口的兩種類型
網(wǎng)絡(luò)理論
struct--要么了解他們,要么等異形入侵地球
Convert the Natives!
IP 地址和如何處理他們
socket()--得到文件描述符!
bind()--我們?cè)谀膫(gè)端口?
connect()--Hello!
listen()--有人給我打電話嗎?
accept()--"Thank you for calling port 3490."
send() 和 recv()--Talk to me, baby!
sendto() 和 recvfrom()--Talk to me, DGRAM-style
close() 和 shutdown()--滾開(kāi)!
getpeername()--你是誰(shuí)?
gethostname()--我是誰(shuí)?
DNS--你說(shuō)“白宮”,我說(shuō) "198.137.240.100"
客戶-服務(wù)器背景知識(shí)
簡(jiǎn)單的服務(wù)器
簡(jiǎn)單的客戶端
數(shù)據(jù)報(bào) Socket
阻塞
select()--多路同步 I/O,酷!
參考資料
Disclaimer and Call for Help
--------------------------------------------------------------------------------
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |