電子信息工程課程設(shè)計(jì)指導(dǎo)書提綱_第1頁
電子信息工程課程設(shè)計(jì)指導(dǎo)書提綱_第2頁
電子信息工程課程設(shè)計(jì)指導(dǎo)書提綱_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、最新資料推薦2.基于Linux的TCP通信服務(wù)器端的實(shí)現(xiàn)2.1設(shè)計(jì)要求大家好,今天,與教研室老師商雖了一下題目,覺得你們組的這個(gè)題目有點(diǎn)難度,而且時(shí)間比較短,用LINUX可能會比 麻煩,一是它使用的聽命令比較復(fù)旅 另外編譯環(huán)境的安裝也比較麻煩費(fèi)時(shí).而我們每個(gè)老師耍帶4個(gè)組 沒有太多時(shí)間,這周我們又要內(nèi)審檢查考試卷子,所以現(xiàn)在更改一下設(shè)計(jì)內(nèi)容,不要求在Linux下做了, 可以在windows環(huán)境下來做,箏線程服務(wù)器端,用C卄語言或JAVA語言。這樣都做好G如果有時(shí)間再 熟悉一下Linux環(huán)境,等以后畢業(yè)設(shè)il的時(shí)候再實(shí)現(xiàn)Linux下的服務(wù)器。不知道你們的想法如何?也不知 道你們以前是否有熟悉Li

2、nux的?如有什么問題請隨時(shí)跟我聯(lián)系。2.1.1設(shè)計(jì)目的在linux環(huán)境下,掌握TCP通信的服務(wù)器端實(shí)現(xiàn)方式。2.1.2基本功能要求和設(shè)計(jì)目標(biāo)(1)能夠偵聽客戶端的連接請求;(2)建立獨(dú)立的數(shù)據(jù)通信鏈路;(3)在通信兩端建立對等的通信協(xié)議;(4)完成數(shù)據(jù)包的收發(fā)與存儲;2.1.3擴(kuò)展功能實(shí)現(xiàn)視頻監(jiān)控?cái)?shù)據(jù)的采集以及控制命令的收發(fā)。2.2參考示例2.2.1案例說明(1)TCP三次握手機(jī)制為實(shí)現(xiàn)服務(wù)器端的TCP通信功能,服務(wù)器端需要能夠接受多個(gè)客戶端的通信 請求,并建立多條TCP通信鏈路。TCP的連接建立叫做三次握手。 客戶端發(fā)送一個(gè)帶SYN標(biāo)志的TCP報(bào)文到服務(wù)器。這是三次握手過程中址新資料推薦的

3、報(bào)文lo 服務(wù)器端回應(yīng)客戶端的,這是三次握手中的第2個(gè)報(bào)文,這個(gè)報(bào)文同時(shí) 帶ACK標(biāo)志和SYN標(biāo)志。因此它表示對剛才客戶端SYN報(bào)文的回應(yīng);同時(shí)乂 標(biāo)志SYN給客戶端,詢問客戶端是否準(zhǔn)備好進(jìn)行數(shù)據(jù)通訊。 客戶必須再次回應(yīng)服務(wù)段一個(gè)ACK報(bào)文,這是報(bào)文段3,如圖1。數(shù)據(jù)傳輸是在連接建立后,雙向的數(shù)據(jù)傳送就可以開始??蛻艉头?wù)器都 可以在兩個(gè)方向傳送數(shù)據(jù)和確認(rèn)。主機(jī)A主機(jī)呂圖1 TCP協(xié)議建立連接三次握手過程(2)套接字(Sockets)的概念Windows下網(wǎng)絡(luò)編程的規(guī)范Windows Sockets是Windows下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。SocketX稱套接字,是

4、進(jìn)程之間通信的抽象連接點(diǎn)??梢酝ㄟ^一個(gè)形象的 例子來理解這個(gè)概念,現(xiàn)實(shí)生活中的電話是人們聯(lián)系的常用工具,雙方只要使用 兩部電話機(jī)就可以交談。在計(jì)算機(jī)世界中,兩個(gè)程序就是使用Socket進(jìn)行通信 的,一個(gè)Socket就好比一部電話機(jī),兩個(gè)程序在網(wǎng)絡(luò)上通過一個(gè)雙向鏈路進(jìn)行通 信,這個(gè)雙向鏈路的每一端就成為一個(gè)Socketo進(jìn)程之間要通信,首先要建立各自的Socket,就像要打電話一定要先有電 話機(jī)一樣,打電話時(shí)每部電話機(jī)都可以說和聽。與此類似,每個(gè)Socket也都可 以進(jìn)行讀/寫操作,讀/寫操作時(shí)分別要用到Socket中的輸入流和輸出流。建立連接后,客戶程序可以向Socket里寫入請求,然后服務(wù)器

5、會處理這個(gè)請 求,并把處理結(jié)果通過Socket送回。服務(wù)器應(yīng)用程序一般監(jiān)聽一個(gè)特定端口以等 待一個(gè)客戶的連接請求,當(dāng)一個(gè)連接請求到達(dá)時(shí),客戶和服務(wù)器建立一個(gè)通信連 接。在連接過程中,客戶被分配一個(gè)本地端口號并且與一個(gè)Socket連接,客戶通 過寫Socket來通知服務(wù)器,通過讀Socket來獲取信息。類似地,服務(wù)器也獲取一 個(gè)本地端口號,它需要一個(gè)新的端口號來監(jiān)聽原始端口上的其它連接請求。服務(wù) 器也給它的本地端口連接一個(gè)Socket,讀寫來自客戶的請求。根據(jù)網(wǎng)絡(luò)通信的特址新資料推薦征,套接字可分為兩類:流套接字和數(shù)據(jù)報(bào)套接字。 流套接字流套接字提供雙向的、有序的、無重復(fù)并且無記錄邊界的數(shù)據(jù)流服

6、務(wù),它適 用于處理大量數(shù)據(jù)。網(wǎng)絡(luò)傳輸層可以將數(shù)據(jù)分散和集中到合適尺寸的數(shù)據(jù)包中。流套接字是面向連接的,通信雙方進(jìn)行數(shù)據(jù)交換之前,必須建立一條路徑, 這樣既確定了它們之間存在的路由,乂保證了雙方都是活動(dòng)的、可彼此響應(yīng)的, 但通信雙方之間建立一個(gè)通信信道需要很多開支。除此以外,大部分面向連接的 協(xié)議為保證發(fā)送無誤,可能會需要執(zhí)行額外的訃算機(jī)來驗(yàn)證正確性,因此會進(jìn)一 步增加開支。 數(shù)據(jù)報(bào)套接字?jǐn)?shù)據(jù)報(bào)套接字支持雙向的數(shù)據(jù)流,但并不保證數(shù)據(jù)傳輸?shù)目煽啃浴⒂行蛐缘?和無重復(fù)性。也就是說,一個(gè)從數(shù)據(jù)報(bào)套接字接收信息的進(jìn)程有可能發(fā)現(xiàn)信息重 復(fù),或者和發(fā)出時(shí)的順序不同的悄況。此外,數(shù)據(jù)報(bào)套接字的一個(gè)重要特點(diǎn)是它

7、 保留了記錄邊界。對于這一特點(diǎn),數(shù)據(jù)報(bào)套接口采用了與現(xiàn)在許多包交換網(wǎng)絡(luò)(例 如以太網(wǎng))非常類似的模型。數(shù)據(jù)報(bào)套接字是無連接的,它不保證接收端是否正在偵聽,類似于郵政服務(wù): 發(fā)信人把信裝入郵箱即可,至于收件人是否能收到這封信或郵局是否能按時(shí)將信 件投遞到收件人處等,發(fā)件人都不得而知。因此,數(shù)據(jù)報(bào)并不可靠,需有程序員 負(fù)責(zé)管理數(shù)據(jù)報(bào)的排序和可靠性。應(yīng)用程序一般僅在同一類的套接口間通信。不過只要底層的通信協(xié)議允許, 不同類型的套接口也照樣可以通信。本設(shè)計(jì)采用面向連接的TCP協(xié)議,所以使用流套接字。(3)客戶機(jī)/服務(wù)器模型TCP/IP協(xié)議應(yīng)用的主要工作模式是客戶機(jī)/服務(wù)器模式(Client/Serve

8、r,簡稱 C/S模式)。在兩個(gè)不同進(jìn)程的通信過程中,一方發(fā)出服務(wù)請求,一方提供服務(wù), 通常稱它們?yōu)椤翱蛻暨M(jìn)程”和“服務(wù)進(jìn)程”。顯然,兩個(gè)進(jìn)程之間的通信實(shí)際上 是基于通信協(xié)議的進(jìn)程的同步過程,服務(wù)進(jìn)程作為自愿的提供者,為眾多主機(jī)上 的客戶進(jìn)程提供服務(wù)。服務(wù)進(jìn)程要先于客戶進(jìn)程開啟,在某一確定的網(wǎng)絡(luò)地址(IP 地址+端口號)等待客戶進(jìn)程的請求,如有請求到達(dá),服務(wù)進(jìn)程釆取某種方式(并 發(fā)服務(wù)或者重復(fù)服務(wù)),直到客戶進(jìn)程關(guān)閉,然后服務(wù)進(jìn)程繼續(xù)等待下一個(gè)請求 服務(wù)的進(jìn)程。服務(wù)器通常采用并發(fā)服務(wù)的方式。所謂并發(fā)服務(wù),就是服務(wù)進(jìn)程在有客戶請 求到來時(shí),激活新的進(jìn)程來專門為此客戶請求提供服務(wù),并在客戶終止請求后

9、殺 死該進(jìn)程,與此同時(shí),原先的進(jìn)程可以繼續(xù)在原來的端口等待下一個(gè)客戶的連接。 Socket編程接口為新的請求創(chuàng)建一個(gè)專門的“數(shù)據(jù)套接字”,并發(fā)服務(wù)器根據(jù)該 套接字創(chuàng)建專門的服務(wù)進(jìn)程。并發(fā)服務(wù)的最大優(yōu)點(diǎn)是能及時(shí)相應(yīng)請求,雖然創(chuàng)建新進(jìn)程會增加系統(tǒng)開銷。與此相對應(yīng)的是重復(fù)服務(wù),它利用“數(shù)據(jù)套接字S在 監(jiān)聽的進(jìn)程上直接進(jìn)行服務(wù)。需要說明的是,兩種類型的Socket(SOCK_STREAM 和SOCK.DGRAM)的工作流程是不同的,分別如圖2和圖3所示。服務(wù)器客戶機(jī)建立連接請求/應(yīng)答圖2流套接字服務(wù)的工作流程示意圖服務(wù)器客戶機(jī)圖3數(shù)據(jù)報(bào)套接字服務(wù)的工作流程示意圖2.2.2網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)(1) 網(wǎng)絡(luò)拓?fù)浣Y(jié)

10、構(gòu)采用星型連接。Server(2) 使用10/100Mbps的網(wǎng)卡。(3) 軟件實(shí)現(xiàn)編程語言采用C語言,利用socket進(jìn)行通信。(4) 開發(fā)平臺linuxo 11!于linux能夠提供強(qiáng)大的網(wǎng)絡(luò)支持,以及安全特性,當(dāng) 前主流服務(wù)器端都采用linux平臺構(gòu)筑。2.2.3軟件設(shè)計(jì)設(shè)il流程圖:爲(wèi),:洛41?通佇邇卅拆線創(chuàng)建偵折Socket fiinzcoo1圖4軟件流程圖(1)建立一個(gè)用于偵聽的socket,始終在端口 2000進(jìn)行偵聽。(2)當(dāng)有客戶端發(fā)出鏈路請求,偵聽鏈路接受,并且建立數(shù)據(jù)鏈路,在獨(dú)立的 線程進(jìn)行數(shù)據(jù)通信。(3)拆分通信數(shù)據(jù)包,數(shù)據(jù)包最大長度為1KB,在每個(gè)數(shù)據(jù)包包頭的1個(gè)字節(jié), 用于描述數(shù)據(jù)包的序號,循環(huán)計(jì)數(shù)。也就是說,包頭的第一個(gè)數(shù)據(jù)依次為0, 1, 2.255,超過255后,從0開始重新計(jì)數(shù)。(4)接收的的數(shù)據(jù),寫入文件,每個(gè)文件最大長度上限為1MB。225參考程序清單2.2.6測試方法1.使用客戶端與服務(wù)器端進(jìn)行聯(lián)機(jī),確認(rèn)收發(fā)數(shù)據(jù)正確;2在服務(wù)器端,使用TCPDUMP截獲數(shù)據(jù)進(jìn)行分析,確保數(shù)據(jù)正確。227思考與提高TCP通信是提供多種網(wǎng)絡(luò)的通信基礎(chǔ),掌握TCP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論