基于UDP協(xié)議的接收和

基于UDP協(xié)議的接收和

ID:45993726

大?。?41.50 KB

頁數(shù):29頁

時(shí)間:2019-11-20

基于UDP協(xié)議的接收和_第1頁
基于UDP協(xié)議的接收和_第2頁
基于UDP協(xié)議的接收和_第3頁
基于UDP協(xié)議的接收和_第4頁
基于UDP協(xié)議的接收和_第5頁
資源描述:

《基于UDP協(xié)議的接收和》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、第10章基于UDP協(xié)議的接收和發(fā)送UDP協(xié)議是UserDatagramProtocol的簡(jiǎn)寫,它是無連接的,不可靠的網(wǎng)絡(luò)協(xié)議。本章介紹如何使用UDP協(xié)議進(jìn)行程序設(shè)計(jì),對(duì)UDP編程的基本框架進(jìn)行介紹并給出程序設(shè)計(jì)的例子。本章中使用比較大的篇幅對(duì)UDP協(xié)議的程序設(shè)計(jì)中容易出現(xiàn)的問題進(jìn)行的分析,并給出的解決的方法。主要包含如下內(nèi)容:UDP的編程框架,主要介紹進(jìn)行UDP協(xié)議程序設(shè)計(jì)的時(shí)候客戶端和服務(wù)器端的兩種不同的編程流程。介紹UDP協(xié)議程序設(shè)計(jì)常用的函數(shù),對(duì)函數(shù)recv()/recvfrom()、send()/sendt

2、o()進(jìn)行了介紹介紹一個(gè)使用UDP協(xié)議進(jìn)行程序設(shè)計(jì)的實(shí)例。10.1UDP編程框架使用UDP進(jìn)行程序設(shè)計(jì)可以分為客戶端和服務(wù)器端兩部分。服務(wù)器端主要包含建立套接字、將套接字與地址結(jié)構(gòu)進(jìn)行綁定、讀寫數(shù)據(jù)、關(guān)閉套接字幾個(gè)過程??蛻舳税ń⑻捉幼?、讀寫數(shù)據(jù)、關(guān)閉套接字幾個(gè)過程。服務(wù)器端和客戶端二者流程之間的其主要的差別在于對(duì)于地址的綁定(bind)函數(shù),客戶端可以不用進(jìn)行地址和端口的綁定操作。10.1.1UDP編程框圖UDP協(xié)議的程序設(shè)計(jì)框架,客戶端和服務(wù)器之間的差別在于服務(wù)器必須使用bind()函數(shù)來綁定偵聽的本地UD

3、P端口,而客戶端則可以不進(jìn)行綁定,直接發(fā)送到服務(wù)器地址的某個(gè)端口地址。與TCP程序設(shè)計(jì)相比較,UDP缺少了connect()、listen()及accept()函數(shù),這是用于UDP協(xié)議無連接的特性,不用維護(hù)TCP的連接、斷開等狀態(tài)。1.UDP協(xié)議的服務(wù)器端流程2.UDP協(xié)議的客戶端流程3.UDP協(xié)議服務(wù)器和客戶端之間的交互10.1.1UDP編程框圖10.1.2UDP服務(wù)器編程框架圖10-1中對(duì)UDP協(xié)議中的服務(wù)器程序框架進(jìn)行了說明。服務(wù)器流程主要分為下述的六個(gè)部分,即建立套接字、設(shè)置套接字地址參數(shù)、進(jìn)行端口綁定、接

4、收數(shù)據(jù)、發(fā)送數(shù)據(jù)、關(guān)閉套接字等。(1)建立套接字文件描述符,使用函數(shù)socket(),生成套接字文件描述符(2)設(shè)置服務(wù)器地址和偵聽端口,初始化要綁定的網(wǎng)絡(luò)地址結(jié)構(gòu)。(3)綁定偵聽端口,使用函數(shù)bind(),將套接字文件描述符和一個(gè)地址類型變量進(jìn)行綁定。(4)接收客戶端的數(shù)據(jù),使用函數(shù)recvfrom()接收客戶端的網(wǎng)絡(luò)數(shù)據(jù);(5)向客戶端發(fā)送數(shù)據(jù),使用函數(shù)sendto()向服務(wù)器主機(jī)發(fā)送數(shù)據(jù);(6)關(guān)閉套接字,使用函數(shù)close()釋放資源。10.1.3UDP客戶端編程框架在圖10-1中,同樣對(duì)UDP協(xié)議的客戶端

5、流程進(jìn)行了描述,按照?qǐng)D中所示,UDP協(xié)議的客戶端流程分為套接字建立、設(shè)置目的地址和端口、向服務(wù)器發(fā)送數(shù)據(jù)、從服務(wù)器接收數(shù)據(jù)、關(guān)閉套接字等五個(gè)部分。與服務(wù)器端的框架相比,少了bind()部分,客戶端程序的端口和本地的地址可以由系統(tǒng)進(jìn)行使用時(shí)指定,在sendto()和recvfrom()的時(shí)候,網(wǎng)絡(luò)協(xié)議棧會(huì)臨時(shí)指定本地的端口和地址:建立套接字文件描述符,socket();設(shè)置服務(wù)器地址和端口,structsockaddr;向服務(wù)器發(fā)送數(shù)據(jù),sendto();接收服務(wù)器的數(shù)據(jù),recvfrom();關(guān)閉套接字,close

6、()。10.2UDP協(xié)議程序設(shè)計(jì)常用函數(shù)UDP協(xié)議常用的函數(shù)有recv()/recvfrom()、send()/sendto()、socket()、bind()等等。當(dāng)然這些函數(shù)同樣可以用于TCP協(xié)議的程序設(shè)計(jì)。10.2.1建立套接字socket()和綁定套接字bind()UDP協(xié)議建立套接字的方式如TCP的方式一樣,使用socket()函數(shù),只不過,協(xié)議的類型使用SOCK_DGRAM,而不是參數(shù)SOCK_STREAM。例如下面是建立一個(gè)UDP套接字文件描述符的代碼:ints;s=socket(AF_INET,SO

7、CK_DGRAM,0);10.2.2接收數(shù)據(jù)recvfrom()/recv()當(dāng)客戶端成功建立了一個(gè)套接字文件描述符并構(gòu)建了合適的structsockaddr結(jié)構(gòu)后,或者服務(wù)器端成功的將套接字文件描述符和地址結(jié)構(gòu)綁定后,可以使用recv()或者recvfrom()來接收到達(dá)此套接字文件描述符上的數(shù)據(jù)或者在這個(gè)套接字文件描述符上等待數(shù)據(jù)的到來。1.函數(shù)recv()和recvfrom()介紹2.使用函數(shù)recvfrom()的例子3.應(yīng)用層recv()函數(shù)和內(nèi)核函數(shù)的關(guān)系10.2.3發(fā)送數(shù)據(jù)sendto()/send()

8、當(dāng)客戶端的成功的建立了一個(gè)套接字文件描述符并構(gòu)建了合適的structsockaddr結(jié)構(gòu)后,或者服務(wù)器端成功的將套接字文件描述符和地址結(jié)構(gòu)綁定后,可以使用send()或者sendto()函數(shù)來發(fā)送數(shù)據(jù)到某個(gè)主機(jī)上。1.函數(shù)send()和sendto()介紹2.使用函數(shù)sendto()的例子3.應(yīng)用層函數(shù)sendto()和內(nèi)核函數(shù)的關(guān)系10.2.3發(fā)送數(shù)據(jù)se

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

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

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