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