資源描述:
《Linux下基于Socket的網(wǎng)絡(luò)編程.pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第".卷第/期淮北煤炭師范學(xué)院學(xué)報(bào)012-".31-/"##$年)月415678219:58;<=;>182?7@5AB6CD=8EF=6A>122=G=H=I-"##$!"#$%下基于&’()*+的網(wǎng)絡(luò)編程陳學(xué)峰&",柴俊霞(&-淮北煤炭師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系,安徽淮北"/.###J"-首都師范大學(xué)信息工程學(xué)院,北京##/’+摘要!隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)編程變得越來(lái)越重要,除了簡(jiǎn)單的KLM編程外,還包括利用套接口(H1EN=B+進(jìn)行客戶O服務(wù)器應(yīng)用程序的設(shè)計(jì)-本文先對(duì)與套接口相關(guān)的概念和函數(shù)作了一般性介紹,并提出了網(wǎng)絡(luò)程序
2、設(shè)計(jì)的流程,最后通過(guò)一個(gè)端口掃描程序來(lái)說(shuō)明套接口編程的一般方法-關(guān)鍵詞!P;75QJ套接口J網(wǎng)絡(luò)編程J端口中圖分類號(hào)!DR/)/-#’文獻(xiàn)標(biāo)識(shí)碼!S文章編號(hào)!&T’"%’&’’("##$+#/%##T#%#$&概念和術(shù)語(yǔ)1.1端口和套接口若一個(gè)主機(jī)上同時(shí)有多個(gè)應(yīng)用程序在運(yùn)行,他們都可能使用D>R或UVR協(xié)議進(jìn)行通信,則傳輸層協(xié)議收到數(shù)據(jù)后如何區(qū)分?jǐn)?shù)據(jù)是傳給哪個(gè)應(yīng)用程序的呢W為此引入了端口和套接口-端口!標(biāo)識(shí)傳輸層與應(yīng)用程序的數(shù)據(jù)接口(服務(wù)訪問(wèn)點(diǎn)HSR+,每個(gè)端口有一個(gè)&T位的標(biāo)識(shí)符,稱為端口號(hào)-套接口!?R地址與端口號(hào)的組合,用來(lái)標(biāo)識(shí)全網(wǎng)范
3、圍內(nèi)的唯一一個(gè)端口,在D>R協(xié)議中用來(lái)標(biāo)識(shí)一個(gè)連接-網(wǎng)絡(luò)應(yīng)用程序之間通過(guò)套接口來(lái)實(shí)現(xiàn)通信X&%"Y-常用的H1EN=B類型有三種!流式套接口、數(shù)據(jù)報(bào)式套接口和原始套接口-流式是一種面向連接的H1EN=B,針對(duì)于面向連接的D>R服務(wù)應(yīng)用J數(shù)據(jù)報(bào)式H1EN=B是一種無(wú)連接的H1EN=B,對(duì)應(yīng)于無(wú)連接的UVR服務(wù)應(yīng)用J原始套接口是針對(duì)網(wǎng)絡(luò)層編程用的套接口,例如I;7G命令的編寫(xiě)要用到原始套接口,因?yàn)镮;7G的底層協(xié)議是?>ZR,而?>ZR屬于網(wǎng)絡(luò)層(如圖&+-圖&D>RO?R協(xié)議模型及各層所用協(xié)議1.2套接字和套接口地址結(jié)構(gòu)套接字是套接口描述字的
4、簡(jiǎn)稱,是整型數(shù)字,它與文件描述符共用一段數(shù)值空間#[T../.-應(yīng)用程序中使用套接字來(lái)調(diào)用套接口,套接字可認(rèn)為是指向套接口的指針,就像文件描述符是指向文件的指針一樣-套接字和端口號(hào)是最容易混淆的兩個(gè)概念,套接字不是人為指定的,而是由函數(shù)H1EN=B(+的返回值決定X&Y的-一般來(lái)說(shuō),該套接字(文件描述符+是系統(tǒng)當(dāng)前可用的,并且是數(shù)值最小的整型描述符J端口號(hào)在客戶應(yīng)用程序中一般不人為指定,而在服務(wù)器應(yīng)用程序中必須指定,因?yàn)榉?wù)器應(yīng)用程序要在某個(gè)固定端口上監(jiān)收稿日期!"##$%#"%&’作者簡(jiǎn)介!陳學(xué)峰(&)’*%+,男,山東泰安人,助教,主要
5、研究方向!計(jì)算機(jī)網(wǎng)絡(luò)-第#期陳學(xué)峰等:$%&’(下基于)*+,-.的網(wǎng)絡(luò)編程!"聽(tīng)/$%&’(支持多種套接口地址結(jié)構(gòu)0在這兒只介紹一下1234套接口地址結(jié)構(gòu)和通用套接口地址結(jié)構(gòu)/通用套接口地址結(jié)構(gòu)5.6’+.5*+,7886的定義如下95.6’+.5*+,7886:’&5%;&-85<*6.57=>7?%@ABC8地址族0DE=(((8C+<7657=87.7F"4GBC8"4字節(jié)的協(xié)議地址8CH在這里057=>7?%@A一般為DE=1IJKB57=87.7則包含該5*+,-.的12地址和端口號(hào)/1234套接口地址結(jié)構(gòu)5.6’+.5*+,7
6、886=%&的定義如下95.6’+.5*+,7886=%&:5<*6.%&.5%&=>7?%@ABC8地址族8C’&5%;&-85<*6.%&.5%&=L*6.BC8端口號(hào)8C5.6’+.%&=78865%&=7886BC812地址8C’&5%;&-8+<765%&=M-6*FNGBC8填充8CHB指向5*+,7886=%&的指針和指向5*+,7886的指針可以相互轉(zhuǎn)換0這意味著如果一個(gè)函數(shù)所需參數(shù)類型是5*+,7886時(shí)0你可以在函數(shù)調(diào)用的時(shí)候?qū)⒁粋€(gè)指向5*+,7886=%&的指針轉(zhuǎn)換為指向5*+,7886的指針B或者相反/5%&=>7?
7、%@A通常被賦值DE=1IJKB5%&=L*6.和5%&=7886應(yīng)該轉(zhuǎn)換成為網(wǎng)絡(luò)字節(jié)優(yōu)先順序B而5%&=7886則不需要轉(zhuǎn)換/O套接口操作函數(shù)2.1socket()函數(shù)原型9%&.5*+,-.P%&.8*?7%&0%&..AL-0%&.L6*.*+*@Q/功能9創(chuàng)建指定類型的套接口并返回套接口描述符/參數(shù)說(shuō)明98*?7%&參數(shù)指定5*+,-.的域名0為DE=1IJK或DE=RI1SB.AL-指定套接口的類型0為)TUV=)KWJDX、)TUV=YZWDX或)TUV=WD[BL6*.*+*@通常賦值“”/2.2bind()函數(shù)原型9%&.
8、]%&8P%&.5*+,>805.6’+.5*+,78868?A=78860%&.7886@-&Q/功能9使套接口與12地址和端口號(hào)綁定/參數(shù)說(shuō)明9)*+,>8是一個(gè)5*+,-.