TCP的客戶端與服務器編程-課設報告要點_第1頁
TCP的客戶端與服務器編程-課設報告要點_第2頁
TCP的客戶端與服務器編程-課設報告要點_第3頁
TCP的客戶端與服務器編程-課設報告要點_第4頁
TCP的客戶端與服務器編程-課設報告要點_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、沈航北方科技學院課程設計說明書課程稱網絡應用開發實戰系別專業班級學號學生姓名指導教師2015年1月沈陽航空航天大學北方科技學院課程設計報告摘要隨著科技的發展和社會的不斷進步,我國的科研成果也越來越多。要想在科技 方面走在世界前列,必須要有自己的科研管理方案。由此看來,一種對科研信息管 理行之有效的手段顯得尤為重要,出色的科研信息管理會給整個社會帶來無窮的經 濟效益和社會效益。計算機的最大好處在于利用它能夠進行更好的通信。使用計算 機進行通信控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復 雜的通信與開發,計算機能夠充分發揮它的優越性。關鍵詞:TCP,服務器,客戶端2TCP客戶端與

2、服務器編程楊闊目錄摘 要1緒論11.1 開發背景11.2 開發意義11.3 開發目的21.4 開發要求22可行性分析32.1 技術可行性分析 32.2 操作可行性分析32.3 經濟可行性分析 .43需求分析54系統設計64.1 系統結構64.2 執行步驟75詳細設計95.1 模型結構95.2 功能分析95.3 設計與實現116系統調試與測試136.1 系統調試136.2 系統測試137結論14參考文獻15附錄1用戶手冊16沈陽航空航天大學北方科技學院課程設計報告附錄2-源程序17iii沈陽航空航天大學北方科技學院課程設計報告1緒論隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已被人們

3、深刻認識。它已進入人類社會的各個領域并發揮著越來越重要的作用。作為計算機應用的一部分,使用計算機實現TCP客戶端與服務器的編程,具有很大的意義。例如,使用方便、可靠性高、保密性好、壽命長、成本低等。這些優點能夠極大地提高效率,這是與世界接軌的重要條件。因此要開發一個TCP客戶端和服務器程,利用現代化方法進行通信。1.1 開發背景當今時代是飛速發展的信息時代,在各行各業中離不開網絡,這正是計算機被 廣泛應用的原因。計算機的最大好處在于利用它能夠進行更好的通信。使用計算機 進行通信控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜 的通信與開發,計算機能夠充分發揮它的優越性。設計一個

4、TCP的服務器與客戶端程序,目的是為了更快,更好地使用 TCP網絡進行上層業務開發。1.2 開發意義在目前的情形下,從所現有的實際條件出發,利用計算機設計一個TCP服務器和客戶端程序,實現客戶端與服務器的連接通信。為上層業務開發減少負擔,從根 本上做到科學化、高效率化這一目的。1.3 開發目的隨著社會的發展,在信息社會中,信息的獲取、處理、交流和決策都需要高質量的計算機軟件來完成。作為計算機應用的一部分,使用計算機實現TCP客戶端與服務器的編程,具有很大的意義。例如使用方便、可靠性高、保密性好、壽命長、 成本低等。這些優點能夠極大地提高效率,這是社會進步與國際接軌的表現。設計一個TCP的服務器

5、與客戶端程序,目的是為了更快,更好地使用TCP網絡進行上層 業務開發,使TCP編程更加方便。1.4 開發要求利用流式套接字編寫TCP客戶機和服務器程序。主要包含的功能如下:服務器功能:從端口 6000接收客戶發送來的數據;只要有客戶請求連接,服務器就接受連接; 連接成功后,服務器端顯示客戶的IP地址和端口號,并向請求連接的客戶發送“I am a server!”信息;如果發送過程正確完成,顯示所發送的字節數。客戶機功能:向服務器發出連接請求;連接成功后,接收并顯示從服務器收到的信息內容和 字節數。172可行性分析可行性分析(feasibility study ),是世界上普遍采用的一種研究工程

6、項目是否可行 的科學。它通過各種有效的方法,對工程項目進行分析,從技術、經濟、財務等方 面加以評價,最終給投資決策者提供是否選擇該項目進行投資的依據。2.1 技術可行性分析當今社會計算機已經相當普及,人們的日常生活基本離不開它。TCP服務器和客戶端編程主要實現從端口 6000接收客戶發送來的數據,如果有客戶請求連接,服 務器就接受連接;連接成功后,服務器端顯示客戶的IP地址和端口號,并向請求連接的客戶發送“ I am a server!”信息;如果發送過程正確完成,顯示所發送的字節數 對客戶信息的管理,內容并不復雜。因此制作一個TCP客戶端和服務器程序是有必要的。綜上所述,科研管理信息系統的開

7、發從數據庫技術、軟件技術、硬件技術方面 均具有可行性。2.2 操作可行性分析根據要求本系統需要操作界面友好,界面美觀,使用簡單方便,系統穩定性好, 安全可靠。本系統是高校科研管理信息系統,獲取的本機名,用來解析得到本機的 IP地址的;接著就綁定IP地址成功,然后服務器就處于監聽狀態,等待客戶端的連 接。也就是接下來就是TCP/IP的三次握手的操作,該操作成功了服務器和客戶端就 可以進行通信了。綜合科研管理信息系統的各項簡潔操作,本系統在操作上是可行的。2.3 經濟可行性分析硬件方面, 一臺普通的計算機上就可以實現本次編程,一般的 I5雙核四線程 或者AMD的四核CPU,可以滿足要求了。對于復雜

8、的通信與開發,計算機能夠充 分發揮它的優越性。總的來說,此次編程對電腦要求不會很高,后期運行對系統也 無過高要求。所以,從經濟角度來講,開發本程序是可行的。3需求分析TCP協議提供的是可靠的、面向連接的傳輸控制協議,即在傳輸數據前要先建立邏輯連接,然后再傳輸數據,最后釋放連接3個過程。TCP提供端到端、全雙工通信;采用字節流方式,如果字節流太長,將其分段;提供緊急數據傳送功能。本 次課程設計的題目是TCP服務器與客戶端軟件,使用TCP協議實現客戶端與服務器 之間的通信。軟件針對局域網內部用戶,實現用戶間的即時通信。需要分別實現服 務器端和客戶端的軟件設計。TCP要求在發送數據之前必須打開連接。

9、服務器應用程序必須執行一個稱作被 動打開(passive open)的操作,以利用一個已知的端口號創建一個鏈接,這是,服 務器并不是對網絡進行呼叫,而是偵聽并等待引入的請求。客戶應用程序必須執行 一個主動打開(active open),為此,它向服務器應用程序發送一個同步序列號 (SYN) 以標識連接。客戶應用程序可以將動態端口號作為本地端口使用。服務器必須向客 戶發送一個確認(ACK)以及服務器的序列號(SYN)。隨后,客戶回復一個 ACK, 這樣就建立了鏈接。4系統設計系統設計要回答 怎么做”即如何實現系統說明書規定的系統功能。在這一階段,要根據實際的技術條件,經濟條件和社會條件確定系統的

10、實施方案,即系統的物理模型。4.1 系統結構套接字這個術語并沒有定義某個協議:它具有兩層含義,但兩者都與一個協議 相關。第一個含義是套接字編程 API,它最初由伯克利大學為 BSDUNIX而創建。BSD 套接字在經過修改后被用作 Windows環境的編程接口(并且被命名為WinSock)。WinSock API 被包裝在 System.Net.sockets 命名空間的.NET類中。WindowsSockets 是一個獨立于協議的編程接口,用于編寫網絡應用程序。套接字的第二層含義表示 一個用于在進程間進行通信的終端。在 TCP/IP中,每個終端都與一個IP地址和一 個端口號綁定。我們必須對流式

11、套接字和數據報套接字這兩種類型進行區分。流失 套接字用TCP/IP協議來使用面向連接的通信。使用TCP套接字編程可以實現基于 TCP/IP協議的面向連接的通信,它分為 服務器端和客戶端兩部分,其主要實現過程如圖4.1所示。服務器端HstonQ ,accept)客戶端阻塞直到接收到客戶連接請求建立連接tcp 一次押r*_ rcad()_數據諸求數據響應關閉連接duseQ圖4.14.2 執行步驟服務器端步驟:使用socket(見【J建套接字;將創建的套接字綁定到指定的地址結構;設置套接字為監聽模式,進入被動接受連接狀態; 接受請求,建立連接;讀寫數據;終止連接。客戶端步驟:創建套接字;與遠程服務器

12、建立連接;讀/寫數據;終止連接。5詳細設計詳細設計的主要任務是設計每個模塊的實現算法、所需的局部數據結構。詳細 設計的目標有兩個:實現模塊功能的算法要邏輯上正確和算法描述要簡明易懂。5.1 模型結構客戶機/服務器模型,又稱為 Client/Server模型,簡稱C/S架構。C/S計算技術 在信息產業當中占有重要的地位。這種客戶機/服務器模型是一種非對稱式編程模式。 該模式的基本思想是把集中在一起的應用劃分成為功能不同的兩個部分,分別在不同的計算機上運行,通過它們之間的分工合作來實現一個完整的功能。對于這種模式 而言其中一部分需要作為服務器,用來響應并為客戶提供固定的服務;另一部分則 作為客戶機

13、程序用來向服務器提出請求或要求某種服務。在此“服務器”是指能在 網絡上提供服務的任何程序。服務器接受網絡上的請求,完成服務后將結果返回給 申請者。對于簡單的服務,把每個請求用一個IP數據報發給服務器,服務器用另一個數據報返回響應。嚴格說來,客戶機/服務器模型并不是從物理分布的角度來定義, 它所體現的是一種網絡數據訪問的實現方式。采用這種結構的系統目前應用非常廣 泛。各種網絡服務器基本都遵循同樣的算法:創建一個端口(Port),接受從網絡上來的 客戶服務請求,完成計算后把結果返回給客戶,如此反復。5.2 功能分析服務器與客戶端的交互過程如圖所示:客戶端服務器SYN K, ACK J+lACKK+

14、1L socket, bind, listenaccept阻塞SYN RCVDESTABLISHED 4c3鼠返厄socket戰照且塞SYN SENTESTABLISHEDconnect 返回圖5.1建立連接部分stdoul.客戶端服務器 fgetsIfiShelloCiieni L-.r lie liOCJ .13,14 P) ,SWRiRMMMRARWW WVWWwivWWVWW? i.sender神國sockfd力屏上用一ierver write子進程阻塞與侏斕用遮程返回到 L acceptfil圖5.2等待數據傳輸部分客戶端服務器客盧輸入ml+D.3 H返回MM盛威 返螞唐戶終止冏冷

15、關閉sockfdFIN_WAIT_2TIME WAITFINMACK M+lFINNACKN + 1圖5.3關閉連接部分服務器以K硝應,向應用 程序發送文件結束符E0嘴 應用程序,在隊列申等待CLOSE WAIT子攜程接收到ECFjead(卜0, 內既h殛叵倒子進程王函 數,子進程關閉套接字. 發送FIN子迸程終止,向 父進程發送 $ta電id僖號CLOSED5.3 設計與實現本程序實現一個客戶端基礎類(TCPClientBase)和服務器端基礎類 (TCPServerBasR ,其中客戶端基礎類有兩種方式,一種是使用于單獨的客戶端的單 元;另一種使用與服務器端接收一個鏈接后的單元流程圖如圖5

16、.4所示。圖5.4流程圖6系統調試與測試系統調試與測試主要是指通過對系統的反復調試與測試,找出系統還存在的錯 誤或不足,最后糾正錯誤或不足,期望系統達到最優效果。6.1 系統調試調試過程主要是運行編制好的程序,然后遇到錯誤后根據系統的提示,找到相 關的問題所在。本系統調試過程中遇到問題、原因和解決方法如下面介紹。出現的問題:字符信息不能正常顯示從程序中讀出來的信息是亂碼,只有數字讀出來是正常的,而對于字符讀出來 卻都是亂碼。經過查詢資料和反復嘗試,終于能正常顯示。原來是忘記了加上引號, 改正后,顯示正常。6.2 系統測試測試是程序的一種執行過程,目的是盡可能發現并改正被測試程序中的錯誤, 提高

17、程序的可靠性。它是程序生命周期中一項非常重要且非常復雜的工作,對軟件 可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術還無望 成為實用性方法的情況下,軟件測試在將來相當一段時間內仍然是軟件可靠性保證 的有效方法。軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質 量地完成軟件開發項目。不足的測試勢必使軟件帶著一些未揭露的隱藏錯誤投入運 行,這將意味著更大的危險讓用戶承擔。過度測試則會浪費許多寶貴的資源。到測 試后期,即使找到了錯誤,然而付出了過高的代價。調試過程主要是運行編制好的程序,然后遇到錯誤后根據系統的提示,找到相 關的問題所在。經過不斷的努力,本系統調試過程

18、中遇到的問題終于一一解決。7結論經過將近半個月的設計與開發,TCP客戶端與服務器程序基本開發完畢,其功 能基本符合需求,能夠完成客戶端與服務器的通信。對于數據的一致性的問題也通 過程序進行了有效的解決。系統設計為整個程序構建了骨架,各個功能模塊實現各 個細節部分。利于使用者在需要之時快速連接服務器。但是由于課程設計時間較短, 所以該系統還有許多不盡人意的地方比如通信方式比較單一,用戶界面不夠美觀, 幫助系統不夠完善,出錯處理不夠等多方面問題。這些都有待于進行進一步改善。沈陽航空航天大學北方科技學院課程設計報告參考文獻1龔沛曾,楊志強.C/C+程序設計教程.高等教育出版社,2004年2譚獻海網絡

19、編程技術及應用,北京:清華大學出版社,2006.123吳功宜,董大凡.計算機網絡高級軟件編程技術,北京:清華大學出版社,2008.1沈陽航空航天大學北方科技學院課程設計報告附錄1 用戶手冊點擊運行,彈出程序界面,如圖1所示。蜜塞麻乳S魚 連更等TCP朋務器正在運行一.專器的數據:口 « a client*;子下數061連接中EiMgai L端:電23Ml務器的飄據二【1 am a client*;主節數IE 戶端的教;捌口 »aclient*;字節數"6J 。端的數鼎:口 a SeruerT ;字節教"5 1格收到服務器的數據Ml am a SerHJ

20、;字節數第】 rress any key to cone inue_圖1程序運行界面圖中顯示了 TCP客戶端與服務器的程序運行界面,接受信息并統計出發送信 息的字節數的情況。20附錄2 源程序主要模塊源代碼清單:# include <stdio.h># include <winsock2.h>#pragma comment(lib, "WS2_32") 鏈接到 WS2_32.lib# define PORT 6000 /此服務器監聽的端口號# define BUFFERLEN 1024 / 數據緩沖區大小void main()通過載入 Winsock

21、庫,來使用 Winsock的相關函數WSADA TA wsaData; 用來返回 Winsock庫的詳細信息WORD version = MAKEWORD(2, 2);int ret = WSAStartup(version, &wsaData);if(ret != 0)printf("加載 Winsock 庫錯誤! n");return ;SOCKET sListen;/聲明服務器端監聽套接sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (INVALID_SOCKET=sListen)printf("

22、創建套接字失敗:%dn",WSAGetLastError();return;設置服務器端地址struct sockaddr_in addrSrv; addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(PORT);addrSrv.sin_addr.s_addr=inet_addr("");if (SOCKET_ERROR=bind(sListen,(sockaddr *)&addrSrv,sizeof(addrSrv) printf("綁定失敗:%dn",WSAGetLas

23、tError();return;if (SOCKET_ERROR=listen(sListen,5)printf("監聽失敗:%dn",WSAGetLastError();return;printf(" TCP服務器正在運行.n n");SOCKET SockConn;sockaddr_in addrClient;/聲明存放來自客戶端的地址int addrlen=sizeof(addrClient);/ 初始化客戶端地址長度char sendBufBUFFERLEN; 用戶發送緩沖區char recvBufBUFFERLEN; 用戶接收緩沖區int se

24、ndlen;發送數據長度int recvlen;/接收數據長度SOCKET sockClient;/聲明客戶端套接字/socket(協議地址族,套接字類型,協議創建套接字sockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if ( INV ALID_SOCKET =sockClient)printf("創建套接字失敗:dn",WSAGetLastError();return ;if(SOCKET_ERROR=connect(sockClient,(sockaddr*)&addrSrv,sizeof(addrSrv)p

25、rintf("連接失敗:%dn",WSAGetLastError();return;printf("連接到服務器n");SockConn=accept(sListen,(sockaddr*)&addrClient,&addrlen);if (INV ALID_SOCKET=SockConn) printf("接受客戶端連接失敗:dn",WSAGetLastError();/ continue;sprintf(sendBuf,"I am a client!");while(true)sendlen=send(sockClient,sendBuf,strlen(sendBuf)+1,0);printf("發送到服務器的數據:%s;字節數%dn",sendBuf,sendlen);if (SOCKET_ERROR=sendlen)printf("發送到服務器失敗:%d n",WSAGetLastError();return;printf("客戶端的連接 IP:%s,端口 :%dn", inet_ntoa(addrClient.sin_addr), ntohs(addrClient.sin_po

溫馨提示

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

評論

0/150

提交評論