




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于TCP協(xié)議下的簡單網(wǎng)絡通信與實現(xiàn)摘要本文設計并實現(xiàn)了在Windows下基于局域網(wǎng)內(nèi)的TCP協(xié)議的簡單即時通信系統(tǒng),系統(tǒng)采用TCP/IP模式,底層通信通過SOCKET套接字接口對端口進行監(jiān)聽,當有消息發(fā)送來時,做出相應的處理,服務器負責客戶端的登錄驗證。本文首先討論了套接字創(chuàng)建、綁定、將套接字設置為監(jiān)聽模式、接受信息和關閉套接字從而實現(xiàn)簡單的網(wǎng)絡通信,然后闡述了如何使用C+來模擬基于TCP協(xié)議下的客戶服務方式的網(wǎng)絡通信過程。由于在此設計中主要是使用C程序的形式來模擬TCP協(xié)議的傳輸方式,從而實現(xiàn)面向?qū)ο蟮目煽總鬏?,在這種情況下無需對IP協(xié)議進行討論。關鍵字:套接字 TCP協(xié)議目錄1、引言.1.1、課程背景.1.2、相關技術介紹. 1.3、TCP協(xié)議1.4、TCP傳輸控制協(xié)議.1.5、套接字2、系統(tǒng)框架.3、系統(tǒng)設計流程圖.4、系統(tǒng)的實現(xiàn).4.1、服務器端程序.4.2、客戶端程序.結(jié)論參考文獻1、引言1.1、課題背景TCP/IP起源于美國國防部高級研究規(guī)劃部署(DARPA)的一項研究計劃實現(xiàn)若干臺主機的相互通信?,F(xiàn)在,TCP/IP已成為Internet上通信的工業(yè)標準。因為OSI模型的七層參考模型比較復雜,并且在實際運用中難以實現(xiàn),所以目前應用比較多的是TCP/IP模型,該模型包括4個層次:應用層運輸層網(wǎng)絡層網(wǎng)絡接口層對于TCP/IP網(wǎng)絡層次模式,核心協(xié)議是網(wǎng)絡層的IP協(xié)議,和運輸層的TCP協(xié)議,這也是為何成為TCP/IP協(xié)議的緣由。1.2、相關技術介紹NET開發(fā)平臺及C.NET開發(fā)語言NET框架是Microsoft公司推出的一種全新的開發(fā)平臺,提供了統(tǒng)一的、面向?qū)ο蟛⑶铱梢詳U展的編程類庫和完善的集成開發(fā)環(huán)境,大大簡化了應用程序的開發(fā)過程,并且具有良好的移植性和安全性。微軟為了推行.NET戰(zhàn)略,特別為.NET平臺設計了一種語言C#。C#是由C和C+派生而來的一種“簡單、流行、面向?qū)ο?、類型安全”的程序設計語言,其綜合了Visual basic的高效率和C+的強大功能,然而更多的人感覺C#更類似JAVA。事實上C#融合了大量的JAVA思想,C#是.NET的關鍵性語言,它是整個.NET平臺的基礎。與C#相比,.NET所支持的其它語言顯然是配角,包括VC+.NET在內(nèi)。但是微軟并沒有打算放棄VC+.NET,相反,微軟對VC+.NET有著另一番獨特的打算,VC+.NET的定位與C#不完全重合,VC+.NET應用范圍仍強于C#,這一點無論對微軟公司還是軟件業(yè)應用現(xiàn)狀都非常重要??梢奦C+.NET在NET框架中已經(jīng)退化成了底層的語言了,就像C+之前的標準C語言一樣,以后將只有開發(fā)底層或桌面程序的程序員使用它。它雖然仍舊強大,但是已經(jīng)不是主流,而主流就是C#語言。1.3、TCP協(xié)議TCP/IP網(wǎng)絡協(xié)議協(xié)議是對等的網(wǎng)絡實體之間通信的規(guī)則,可以簡單地理解為網(wǎng)絡上各計算機彼此交流的一種“語言”。網(wǎng)絡通信協(xié)議設計的基本原則是層次化,層和協(xié)議的集合被稱為網(wǎng)絡體系結(jié)構。相鄰層之間的接口定義了下層向上層提供的基本操作和服務,下層向上層提供的服務分兩種形式:面向連接的服務和無連接的服務。計算機網(wǎng)絡中已經(jīng)形成的網(wǎng)絡體系結(jié)構主要有兩個:OSI參考模型和TCP/IP參考模型。TCP/IP參考模型是因特網(wǎng)(Internet)的基礎。和OSI的7層協(xié)議相比,TCP/IP協(xié)議只有4個層次。通常說的TCP/IP是一組協(xié)議的總稱,TCP/IP實際上是一個協(xié)議族,包括100多個相互關聯(lián)的協(xié)議,其中IP(Internet Protocol, 網(wǎng)際協(xié)議)是網(wǎng)絡層最主要的協(xié)議;TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議是傳輸層中最主要的協(xié)議),一般認為IP、TCP、UDP是最根本的三種協(xié)議,是其他協(xié)議的基礎。1.4、TCP傳輸控制協(xié)議面向連接的通信可以使用可靠通信,在這時候,第四層協(xié)議發(fā)送數(shù)據(jù)接收方的確認,如果未收到數(shù)據(jù)或者數(shù)據(jù)被損壞,則請求重新傳輸。TCP協(xié)議就使用這種可靠通信。使用TCP協(xié)議的應用層協(xié)議包括HTTP、FTP、SMTP和Telnet等。TCP要求在發(fā)送數(shù)據(jù)之前必須打開連接。服務器應用程序必須執(zhí)行一個稱作被動打開(passive open)的操作,以利用一個已知的端口號創(chuàng)建一個鏈接,這是,服務器并不是對網(wǎng)絡進行呼叫,而是偵聽并等待引入的請求??蛻魬贸绦虮仨殘?zhí)行一個主動打開(active open),為此,它向服務器應用程序發(fā)送一個同步序列號(SYN)以標識連接??蛻魬贸绦蚩梢詫討B(tài)端口號作為本地端口使用。服務器必須向客戶發(fā)送一個確認(ACK)以及服務器的序列號(SYN)。隨后,客戶回復一個ACK,這樣就建立了鏈接?,F(xiàn)在可以發(fā)送和接收消息了。接收消息后,總是返回ACK消息。如果在收到ACK之前發(fā)送方已經(jīng)超時,則消息將被放到重發(fā)隊列中以再次發(fā)送。由于它的握手機制,所以TCP協(xié)議比較復雜并且費時,但此協(xié)議在處理數(shù)據(jù)時對數(shù)據(jù)包的傳送有保障,從而使得在應用程序協(xié)議中不需要再包括該功能。1.5、套接字套接字這個術語并沒有定義某個協(xié)議:它具有兩層含義,但兩者都與一個協(xié)議相關。第一個含義是套接字編程API,它最初由伯克利大學為BSD UNIX而創(chuàng)建。BSD套接字在經(jīng)過修改后被用作Windows環(huán)境的編程接口(并且被命名為WinSock)。WinSock API被包裝在System.Net.sockets命名空間的.NET類中。Windows Sockets 是一個獨立于協(xié)議的編程接口,用于編寫網(wǎng)絡應用程序。套接字的第二層含義表示一個用于在進程間進行通信的終端。在TCP/IP中,每個終端都與一個IP地址和一個端口號綁定。我們必須對流式套接字和數(shù)據(jù)報套接字這兩種類型進行區(qū)分。流失套接字用TCP/IP協(xié)議來使用面向連接的通信;另一方面,數(shù)據(jù)報套接字用UDP/IP來使用無連接通信。2、系統(tǒng)框架3、系統(tǒng)設計4、系統(tǒng)的實現(xiàn)4.1、服務器端程序#include #include Void main() /加載套接字庫 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)聽的套接字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);/將套接字設為監(jiān)聽模式,準備接收客戶請求Listen(sockSrv,s);SOCKADDR-IN addrClient;Int len=sizeof( SOCKADDR );While(1)/等待客戶請求到來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);/關閉套接字Closesocket(sockConn);4.2、客戶端程序#include #include Void main() /加載套接字庫 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)/向服務器發(fā)出連接請求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);/關閉套接字Closesocket(sockConn);WSACLeanup() ;結(jié)論 在此設計中僅僅適合于數(shù)量少的計算機間的通信,其中一個缺陷是,當多臺計算機同時進行通信時,會照成網(wǎng)絡擁塞,可能導致消息傳輸中丟失,此設計沒有做出解決的方案,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 社會規(guī)則課件
- 社會職業(yè)認知課件
- 兒童腦疝課件
- 小班健康動畫課件
- 春天主題課件制作
- 兒童肺炎課件
- 兒童肺康復課件
- 小豬的時間管理課件
- 天氣課件教學課件
- 小欖兒童收納課件
- 2025年度次季度工業(yè)級5G專網(wǎng)部署技術服務合同模板
- 美導老師下店培訓流程
- 湖北省潛江市十校聯(lián)考2025屆初三5月底中考模擬考試英語試題含答案
- 中央空調(diào)維保方案
- 2025年鄉(xiāng)鎮(zhèn)心理健康服務計劃
- 氣排球裁判試題庫及答案
- 2025年周口理工職業(yè)學院單招職業(yè)技能考試題庫附答案
- Unit 6 A great week (教學設計)-2024-2025學年外研版(三起)(2024)英語三年級下冊
- 2025版小細胞肺癌免疫治療專家共識解讀
- 人工智能對人力資源管理的影響與轉(zhuǎn)型
- GB/T 6433-2025飼料中粗脂肪的測定
評論
0/150
提交評論