




免費(fèi)預(yù)覽已結(jié)束,剩余5頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于TCP協(xié)議下的簡(jiǎn)單網(wǎng)絡(luò)通信與實(shí)現(xiàn)摘要本文設(shè)計(jì)并實(shí)現(xiàn)了在Windows下基于局域網(wǎng)內(nèi)的TCP協(xié)議的簡(jiǎn)單即時(shí)通信系統(tǒng),系統(tǒng)采用TCP/IP模式,底層通信通過(guò)SOCKET套接字接口對(duì)端口進(jìn)行監(jiān)聽(tīng),當(dāng)有消息發(fā)送來(lái)時(shí),做出相應(yīng)的處理,服務(wù)器負(fù)責(zé)客戶端的登錄驗(yàn)證。本文首先討論了套接字創(chuàng)建、綁定、將套接字設(shè)置為監(jiān)聽(tīng)模式、接受信息和關(guān)閉套接字從而實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)通信,然后闡述了如何使用C+來(lái)模擬基于TCP協(xié)議下的客戶服務(wù)方式的網(wǎng)絡(luò)通信過(guò)程。由于在此設(shè)計(jì)中主要是使用C程序的形式來(lái)模擬TCP協(xié)議的傳輸方式,從而實(shí)現(xiàn)面向?qū)ο蟮目煽總鬏?,在這種情況下無(wú)需對(duì)IP協(xié)議進(jìn)行討論。關(guān)鍵字:套接字 TCP協(xié)議目錄1、引言.1.1、課程背景.1.2、相關(guān)技術(shù)介紹. 1.3、TCP協(xié)議1.4、TCP傳輸控制協(xié)議.1.5、套接字2、系統(tǒng)框架.3、系統(tǒng)設(shè)計(jì)流程圖.4、系統(tǒng)的實(shí)現(xiàn).4.1、服務(wù)器端程序.4.2、客戶端程序.結(jié)論參考文獻(xiàn)1、引言1.1、課題背景TCP/IP起源于美國(guó)國(guó)防部高級(jí)研究規(guī)劃部署(DARPA)的一項(xiàng)研究計(jì)劃實(shí)現(xiàn)若干臺(tái)主機(jī)的相互通信?,F(xiàn)在,TCP/IP已成為Internet上通信的工業(yè)標(biāo)準(zhǔn)。因?yàn)镺SI模型的七層參考模型比較復(fù)雜,并且在實(shí)際運(yùn)用中難以實(shí)現(xiàn),所以目前應(yīng)用比較多的是TCP/IP模型,該模型包括4個(gè)層次:應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層網(wǎng)絡(luò)接口層對(duì)于TCP/IP網(wǎng)絡(luò)層次模式,核心協(xié)議是網(wǎng)絡(luò)層的IP協(xié)議,和運(yùn)輸層的TCP協(xié)議,這也是為何成為TCP/IP協(xié)議的緣由。1.2、相關(guān)技術(shù)介紹NET開(kāi)發(fā)平臺(tái)及C.NET開(kāi)發(fā)語(yǔ)言NET框架是Microsoft公司推出的一種全新的開(kāi)發(fā)平臺(tái),提供了統(tǒng)一的、面向?qū)ο蟛⑶铱梢詳U(kuò)展的編程類庫(kù)和完善的集成開(kāi)發(fā)環(huán)境,大大簡(jiǎn)化了應(yīng)用程序的開(kāi)發(fā)過(guò)程,并且具有良好的移植性和安全性。微軟為了推行.NET戰(zhàn)略,特別為.NET平臺(tái)設(shè)計(jì)了一種語(yǔ)言C#。C#是由C和C+派生而來(lái)的一種“簡(jiǎn)單、流行、面向?qū)ο?、類型安全”的程序設(shè)計(jì)語(yǔ)言,其綜合了Visual basic的高效率和C+的強(qiáng)大功能,然而更多的人感覺(jué)C#更類似JAVA。事實(shí)上C#融合了大量的JAVA思想,C#是.NET的關(guān)鍵性語(yǔ)言,它是整個(gè).NET平臺(tái)的基礎(chǔ)。與C#相比,.NET所支持的其它語(yǔ)言顯然是配角,包括VC+.NET在內(nèi)。但是微軟并沒(méi)有打算放棄VC+.NET,相反,微軟對(duì)VC+.NET有著另一番獨(dú)特的打算,VC+.NET的定位與C#不完全重合,VC+.NET應(yīng)用范圍仍強(qiáng)于C#,這一點(diǎn)無(wú)論對(duì)微軟公司還是軟件業(yè)應(yīng)用現(xiàn)狀都非常重要。可見(jiàn)VC+.NET在NET框架中已經(jīng)退化成了底層的語(yǔ)言了,就像C+之前的標(biāo)準(zhǔn)C語(yǔ)言一樣,以后將只有開(kāi)發(fā)底層或桌面程序的程序員使用它。它雖然仍舊強(qiáng)大,但是已經(jīng)不是主流,而主流就是C#語(yǔ)言。1.3、TCP協(xié)議TCP/IP網(wǎng)絡(luò)協(xié)議協(xié)議是對(duì)等的網(wǎng)絡(luò)實(shí)體之間通信的規(guī)則,可以簡(jiǎn)單地理解為網(wǎng)絡(luò)上各計(jì)算機(jī)彼此交流的一種“語(yǔ)言”。網(wǎng)絡(luò)通信協(xié)議設(shè)計(jì)的基本原則是層次化,層和協(xié)議的集合被稱為網(wǎng)絡(luò)體系結(jié)構(gòu)。相鄰層之間的接口定義了下層向上層提供的基本操作和服務(wù),下層向上層提供的服務(wù)分兩種形式:面向連接的服務(wù)和無(wú)連接的服務(wù)。計(jì)算機(jī)網(wǎng)絡(luò)中已經(jīng)形成的網(wǎng)絡(luò)體系結(jié)構(gòu)主要有兩個(gè):OSI參考模型和TCP/IP參考模型。TCP/IP參考模型是因特網(wǎng)(Internet)的基礎(chǔ)。和OSI的7層協(xié)議相比,TCP/IP協(xié)議只有4個(gè)層次。通常說(shuō)的TCP/IP是一組協(xié)議的總稱,TCP/IP實(shí)際上是一個(gè)協(xié)議族,包括100多個(gè)相互關(guān)聯(lián)的協(xié)議,其中IP(Internet Protocol, 網(wǎng)際協(xié)議)是網(wǎng)絡(luò)層最主要的協(xié)議;TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議是傳輸層中最主要的協(xié)議),一般認(rèn)為IP、TCP、UDP是最根本的三種協(xié)議,是其他協(xié)議的基礎(chǔ)。1.4、TCP傳輸控制協(xié)議面向連接的通信可以使用可靠通信,在這時(shí)候,第四層協(xié)議發(fā)送數(shù)據(jù)接收方的確認(rèn),如果未收到數(shù)據(jù)或者數(shù)據(jù)被損壞,則請(qǐng)求重新傳輸。TCP協(xié)議就使用這種可靠通信。使用TCP協(xié)議的應(yīng)用層協(xié)議包括HTTP、FTP、SMTP和Telnet等。TCP要求在發(fā)送數(shù)據(jù)之前必須打開(kāi)連接。服務(wù)器應(yīng)用程序必須執(zhí)行一個(gè)稱作被動(dòng)打開(kāi)(passive open)的操作,以利用一個(gè)已知的端口號(hào)創(chuàng)建一個(gè)鏈接,這是,服務(wù)器并不是對(duì)網(wǎng)絡(luò)進(jìn)行呼叫,而是偵聽(tīng)并等待引入的請(qǐng)求??蛻魬?yīng)用程序必須執(zhí)行一個(gè)主動(dòng)打開(kāi)(active open),為此,它向服務(wù)器應(yīng)用程序發(fā)送一個(gè)同步序列號(hào)(SYN)以標(biāo)識(shí)連接??蛻魬?yīng)用程序可以將動(dòng)態(tài)端口號(hào)作為本地端口使用。服務(wù)器必須向客戶發(fā)送一個(gè)確認(rèn)(ACK)以及服務(wù)器的序列號(hào)(SYN)。隨后,客戶回復(fù)一個(gè)ACK,這樣就建立了鏈接?,F(xiàn)在可以發(fā)送和接收消息了。接收消息后,總是返回ACK消息。如果在收到ACK之前發(fā)送方已經(jīng)超時(shí),則消息將被放到重發(fā)隊(duì)列中以再次發(fā)送。由于它的握手機(jī)制,所以TCP協(xié)議比較復(fù)雜并且費(fèi)時(shí),但此協(xié)議在處理數(shù)據(jù)時(shí)對(duì)數(shù)據(jù)包的傳送有保障,從而使得在應(yīng)用程序協(xié)議中不需要再包括該功能。1.5、套接字套接字這個(gè)術(shù)語(yǔ)并沒(méi)有定義某個(gè)協(xié)議:它具有兩層含義,但兩者都與一個(gè)協(xié)議相關(guān)。第一個(gè)含義是套接字編程API,它最初由伯克利大學(xué)為BSD UNIX而創(chuàng)建。BSD套接字在經(jīng)過(guò)修改后被用作Windows環(huán)境的編程接口(并且被命名為WinSock)。WinSock API被包裝在System.Net.sockets命名空間的.NET類中。Windows Sockets 是一個(gè)獨(dú)立于協(xié)議的編程接口,用于編寫網(wǎng)絡(luò)應(yīng)用程序。套接字的第二層含義表示一個(gè)用于在進(jìn)程間進(jìn)行通信的終端。在TCP/IP中,每個(gè)終端都與一個(gè)IP地址和一個(gè)端口號(hào)綁定。我們必須對(duì)流式套接字和數(shù)據(jù)報(bào)套接字這兩種類型進(jìn)行區(qū)分。流失套接字用TCP/IP協(xié)議來(lái)使用面向連接的通信;另一方面,數(shù)據(jù)報(bào)套接字用UDP/IP來(lái)使用無(wú)連接通信。2、系統(tǒng)框架3、系統(tǒng)設(shè)計(jì)4、系統(tǒng)的實(shí)現(xiàn)4.1、服務(wù)器端程序#include #include Void main() /加載套接字庫(kù) WORD wVersionRequested; WSADATA wsaDdata; Int error;wVersionRequested=MAKEWORD(1,1);err=WSAStarup(wVersionRequested,&wsaDATA);if(err!=0) return;If(LOBYTE(wsadata.wVersion)!=1|HIBYTE(wsadata.wVersion)!=1) WSACleanup(); Return;/創(chuàng)建用于監(jiān)聽(tīng)的套接字SOCKET sockSrv=socket (AF-INET,SOCK-STREAM,0);SOCKADDR-IN addrSrv;addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY);addrSrv.sin-family=AF-INET;addrSrv.sin-port=htons(6000)/綁定套接字Bind(sockSrv ,(SOCKADDR*)&addrSrv ,sizeof(SOCKADDR);/將套接字設(shè)為監(jiān)聽(tīng)模式,準(zhǔn)備接收客戶請(qǐng)求Listen(sockSrv,s);SOCKADDR-IN addrClient;Int len=sizeof( SOCKADDR );While(1)/等待客戶請(qǐng)求到來(lái)SOCKET sockConn=accept(sockSrv ,( SOCKADDR*)&addrClient ,&len);Char sendBuf(100);Sprintf(sendBuf ,)”Welcom %s to ” ,ine-ntoa(addrClient.sin-addr);/發(fā)送數(shù)據(jù)Send(sockConn ,sendbuf ,strlen(sendBuf)+1,0);Char recvBuf(100);/接受數(shù)據(jù)Recv(sockConn,recvBuf ,100 ,0);/打印接受的數(shù)據(jù)Printf(“%sn”,recvBuf);/關(guān)閉套接字Closesocket(sockConn);4.2、客戶端程序#include #include Void main() /加載套接字庫(kù) WORD wVersionRequested; WSADATA wsaDdata; Int error;wVersionRequested=MAKEWORD(1,1);err=WSAStarup(wVersionRequested,&wsaDATA);if(err!=0) return;If(LOBYTE(wsadata.wVersion)!=1|HIBYTE(wsadata.wVersion)!=1) WSACleanup(); Return;/創(chuàng)建套接字SOCKET sockSrv=socket (AF-INET,SOCK-STREAM,0);SOCKADDR-IN addrSrv;addrSrv.sin-addr.S-un.S-addr=hotonl(INADDR-ANY);addrSrv.sin-family=AF-INET;addrSrv.sin-port=htons(6000)/向服務(wù)器發(fā)出連接請(qǐng)求Connect (sockClient ,(SOCKADDR*)&addrSrv ,sizeof(SOCKADDR);/接受數(shù)據(jù)Char recvBuf100;Recv(sockClient , recvBuf ,100 ,0);Printf(“%sn”,recvBuf);/發(fā)送數(shù)據(jù)Send(sockClient ,” This is lisi ”, strlen(“This in lisi”)+1 ,0);/關(guān)閉套接字Closesocket(sockConn);WSACLeanup() ;結(jié)論 在此設(shè)計(jì)中僅僅適合于數(shù)量少的計(jì)算機(jī)間的通信,其中一個(gè)缺陷是,當(dāng)多臺(tái)計(jì)算機(jī)同時(shí)進(jìn)行通信時(shí),會(huì)照成網(wǎng)絡(luò)擁塞,可能導(dǎo)致消息傳輸中丟失,此設(shè)計(jì)沒(méi)有做出解決的方案,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 暑假烘培店活動(dòng)方案
- 智慧校園參與活動(dòng)方案
- 景區(qū)人氣活動(dòng)方案
- 春節(jié)生日蛋糕店活動(dòng)方案
- 春節(jié)翻倍活動(dòng)方案
- 木門抽獎(jiǎng)活動(dòng)方案
- 杭州樂(lè)園活動(dòng)方案
- 村核酸檢測(cè)活動(dòng)方案
- 暖冬消費(fèi)專項(xiàng)活動(dòng)方案
- 最美自拍活動(dòng)方案
- 卓越績(jī)效評(píng)價(jià)準(zhǔn)則概述(專業(yè)性權(quán)威性實(shí)用性)
- GB/T 30142-2013平面型電磁屏蔽材料屏蔽效能測(cè)量方法
- GB/T 29894-2013木材鑒別方法通則
- 國(guó)資進(jìn)場(chǎng)交易工作流程講座
- 當(dāng)代法律英語(yǔ)翻譯全
- 制冷操作證培訓(xùn)教材制冷與空調(diào)設(shè)備運(yùn)行操作作業(yè)培訓(xùn)教程課件
- 湖南省長(zhǎng)沙市望城區(qū)2020-2021學(xué)年八年級(jí)下學(xué)期期末考試歷史試卷
- 煙葉烘烤調(diào)制理論考試試題
- DB23-T 3336-2022懸掛式單軌交通技術(shù)標(biāo)準(zhǔn)-(高清最新)
- 服刑人員心理健康教育課件
- 湖南省長(zhǎng)郡中學(xué)“澄池”杯數(shù)學(xué)競(jìng)賽初賽試題(掃描版含答案)
評(píng)論
0/150
提交評(píng)論