網(wǎng)絡(luò)socket編程指南

網(wǎng)絡(luò)socket編程指南

ID:16163240

大?。?86.50 KB

頁數(shù):37頁

時間:2018-08-08

網(wǎng)絡(luò)socket編程指南_第1頁
網(wǎng)絡(luò)socket編程指南_第2頁
網(wǎng)絡(luò)socket編程指南_第3頁
網(wǎng)絡(luò)socket編程指南_第4頁
網(wǎng)絡(luò)socket編程指南_第5頁
資源描述:

《網(wǎng)絡(luò)socket編程指南》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、網(wǎng)絡(luò)socket編程指南介紹Socket編程讓你沮喪嗎?從manpages中很難得到有用的信息嗎?你想跟上時代去編Internet相關(guān)的程序,但是為你在調(diào)用connect()前的bind()的結(jié)構(gòu)而不知所措?等等…如果你了解C語言并想穿過網(wǎng)絡(luò)編程的沼澤,如果你曾經(jīng)像我一樣為了調(diào)試到處尋找相關(guān)資料而不能解決問題,希望這里對你有一定的幫助。讀者對象這個文檔是一個指南,而不是參考書。如果你剛開始socket編程并想找一本入門書,那么你是我的讀者。但這不是一本完全的socket編程書。平臺和編譯器  這篇文檔中的大多數(shù)代碼都在Linux平臺PC上用GNU的gcc成

2、功編譯過。而且它們在HPUX平臺上用gcc也成功編譯過。但是注意,并不是每個代碼片段都獨立測試過。先來點讓你暈的吧,呵呵,堅持下去你就會柳暗花明??蛻魴C(jī)/服務(wù)器模式在TCP/IP網(wǎng)絡(luò)中兩個進(jìn)程間的相互作用的主機(jī)模式是客戶機(jī)/服務(wù)器模式(Client/Servermodel)。該模式的建立基于以下兩點:1、非對等作用;2、通信完全是異步的??蛻魴C(jī)/服務(wù)器模式在操作過程中采取的是主動請示方式:首先服務(wù)器方要先啟動,并根據(jù)請示提供相應(yīng)服務(wù):(過程如下)1、打開一通信通道并告知本地主機(jī),它愿意在某一個公認(rèn)地址上接收客戶請求。2、等待客戶請求到達(dá)該端口。3、接收到重

3、復(fù)服務(wù)請求,處理該請求并發(fā)送應(yīng)答信號。4、返回第二步,等待另一客戶請求5、關(guān)閉服務(wù)器??蛻舴剑?、打開一通信通道,并連接到服務(wù)器所在主機(jī)的特定端口。2、向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收應(yīng)答;繼續(xù)提出請求……3、請求結(jié)束后關(guān)閉通信通道并終止。典型過程圖1面向連接的套接字的系統(tǒng)調(diào)用時序圖2無連接協(xié)議的套接字調(diào)用時序圖3面向連接的應(yīng)用程序流程圖注意,客戶--服務(wù)器之間可以使用SOCK_STREAM、SOCK_DGRAM或者其它(只要它們采用相同的)。一些很好的客戶--服務(wù)器的例子有telnet/telnetd、ftp/ftpd和bootp/bootpd。每次

4、你使用ftp的時候,在遠(yuǎn)端都有一個ftpd為你服務(wù)。一般,在服務(wù)端只有一個服務(wù)器,它采用fork()來處理多個客戶的連接?;镜某绦蚴牵悍?wù)器等待一個連接,接受(accept())連接,然后fork()一個子進(jìn)程處理它。這是下面會具體講到的。目錄:1)什么是套接字?2)網(wǎng)絡(luò)理論3)結(jié)構(gòu)體4)本機(jī)轉(zhuǎn)換5)IP地址和如何處理它們6)socket()函數(shù)7)bind()函數(shù)8)connect()函數(shù)9)listen()函數(shù)10)accept()函數(shù)11)send()和recv()函數(shù)12)sendto()和recvfrom()函數(shù)13)close()和shutd

5、own()函數(shù)14)getpeername()函數(shù)15)gethostname()函數(shù)16)域名服務(wù)(DNS)17)簡單的服務(wù)器18)簡單的客戶端19)數(shù)據(jù)報套接字Socket20)阻塞21)select()--多路同步I/O22)參考資料1、什么是socket?什么是套接字?  你經(jīng)常聽到人們談?wù)撝皊ocket”,或許你還不知道它的確切含義?,F(xiàn)在讓我告訴你:它是使用標(biāo)準(zhǔn)Unix文件描述符(filedescriptor)和其它程序通訊的方式。你也許聽到一些Unix高手(hacker)這樣說過:“呀,Unix中的一切就是文件!”那個家伙也許正在說到一個事實

6、:Unix程序在執(zhí)行任何形式的I/O的時候,程序是在讀或者寫一個文件描述符。一個文件描述符只是一個和打開的文件相關(guān)聯(lián)的整數(shù)。但是(注意后面的話),這個文件可能是一個網(wǎng)絡(luò)連接,F(xiàn)IFO,管道,終端,磁盤上的文件或者什么其它的東西。Unix中所有的東西就是文件!所以,你想和Internet上別的程序通訊的時候,你將要使用到文件描述符。你必須理解剛才的話。現(xiàn)在你腦海中或許冒出這樣的念頭:“那么我從哪里得到網(wǎng)絡(luò)通訊的文件描述符呢?”,這個問題無論如何我都要回答:你利用系統(tǒng)調(diào)用socket(),它返回套接字描述符(socketdescriptor),然后你再通過它來

7、進(jìn)行send()和recv()調(diào)用?!暗?..”,你可能有很大的疑惑,“如果它是個文件描述符,那么為什么不用一般調(diào)用read()和write()來進(jìn)行套接字通訊?”簡單的答案是:“你可以使用!”。詳細(xì)的答案是:“你可以,但是使用send()和recv()讓你更好的控制數(shù)據(jù)傳輸。”存在這樣一個情況:在我們的世界上,有很多種套接字。有DARPAInternet地址(Internet套接字),本地節(jié)點的路徑名(Unix套接字),CCITTX.25地址(你可以將X.25套接字完全忽略)。也許在你的Unix機(jī)器上還有其它的。1).套接字編程原理一個完整的網(wǎng)間通信進(jìn)

8、程需要由兩個進(jìn)程組成,并且只能用同一種高層協(xié)議。也就是說,不可能通

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。