



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、下載可編輯航北方科技學院課程設計說明書課程名稱網(wǎng)絡應用開發(fā)實戰(zhàn)系別專業(yè)班級學號學生指導教師2015年 1月.專業(yè) .整理 .下載可編輯摘要隨著科技的發(fā)展和社會的不斷進步,我國的科研成果也越來越多。要想在科技方面走在世界前列,必須要有自己的科研管理方案。由此看來,一種對科研信息管理行之有效的手段顯得尤為重要,出色的科研信息管理會給整個社會帶來無窮的經(jīng)濟效益和社會效益。計算機的最大好處在于利用它能夠進行更好的通信。使用計算機進行通信控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的通信與開發(fā),計算機能夠充分發(fā)揮它的優(yōu)越性。關鍵詞: TCP,服務器,客戶端.專業(yè) .整理 .下載可編輯
2、TCP客戶端與服務器編程闊目錄摘要I1 緒論11.1 開發(fā)背景11.2 開發(fā)意義11.3 開發(fā)目的21.4 開發(fā)要求22 可行性分析32.1 技術可行性分析32.2 操作可行性分析32.3 經(jīng)濟可行性分析.43 需求分析54 系統(tǒng)設計 .64.1 系統(tǒng)結(jié)構(gòu)64.2 執(zhí)行步驟75 詳細設計95.1模型結(jié)構(gòu)95.2 功能分析95.3 設計與實現(xiàn) .116 系統(tǒng)調(diào)試與測試136.1 系統(tǒng)調(diào)試136.2 系統(tǒng)測試137 結(jié) 論14.專業(yè) .整理 .下載可編輯參考文獻15附錄 1用戶手冊 .16附錄 2源程序17.專業(yè) .整理 .下載可編輯1 緒論隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能
3、已被人們深刻認識。它已進入人類社會的各個領域并發(fā)揮著越來越重要的作用。作為計算機應用的一部分,使用計算機實現(xiàn)TCP 客戶端與服務器的編程,具有很大的意義。例如, 使用方便、可靠性高、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高效率,這是與世界接軌的重要條件。因此要開發(fā)一個TCP客戶端和服務器程,利用現(xiàn)代化方法進行通信。1.1 開發(fā)背景當今時代是飛速發(fā)展的信息時代,在各行各業(yè)中離不開網(wǎng)絡,這正是計算機被廣泛應用的原因。計算機的最大好處在于利用它能夠進行更好的通信。使用計算機進行通信控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的通信與開發(fā),計算機能夠充分發(fā)揮它的優(yōu)越性。設
4、計一個TCP的服務器與客戶端程序,目的是為了更快,更好地使用TCP網(wǎng)絡進行上層業(yè)務開發(fā)。1.2 開發(fā)意義在目前的情形下,從所現(xiàn)有的實際條件出發(fā),利用計算機設計一個TCP 服務器和客戶端程序,實現(xiàn)客戶端與服務器的連接通信。為上層業(yè)務開發(fā)減少負擔,從根本上做到科學化、高效率化這一目的。.專業(yè) .整理 .下載可編輯1.3 開發(fā)目的隨著社會的發(fā)展,在信息社會中,信息的獲取、處理、交流和決策都需要高質(zhì)量的計算機軟件來完成。作為計算機應用的一部分,使用計算機實現(xiàn)TCP客戶端與服務器的編程,具有很大的意義。例如使用方便、可靠性高、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高效率,這是社會進步與國際接軌
5、的表現(xiàn)。設計一個 TCP的服務器與客戶端程序,目的是為了更快,更好地使用TCP網(wǎng)絡進行上層業(yè)務開發(fā),使TCP編程更加方便。1.4 開發(fā)要求利用流式套接字編寫TCP客戶機和服務器程序。主要包含的功能如下:服務器功能:從端口 6000 接收客戶發(fā)送來的數(shù)據(jù); 只要有客戶請求連接, 服務器就接受連接;連接成功后,服務器端顯示客戶的 IP 地址和端口號,并向請求連接的客戶發(fā)送 “ I am a server !”信息;如果發(fā)送過程正確完成,顯示所發(fā)送的字節(jié)數(shù)??蛻魴C功能:向服務器發(fā)出連接請求;連接成功后,接收并顯示從服務器收到的信息容和字節(jié)數(shù)。.專業(yè) .整理 .下載可編輯2 可行性分析可行性分析 (f
6、easibility study ),是世界上普遍采用的一種研究工程項目是否可行的科學。它通過各種有效的方法,對工程項目進行分析,從技術、經(jīng)濟、財務等方面加以評價,最終給投資決策者提供是否選擇該項目進行投資的依據(jù)。2.1 技術可行性分析當今社會計算機已經(jīng)相當普及,人們的日常生活基本離不開它。TCP服務器和客戶端編程主要實現(xiàn)從端口6000 接收客戶發(fā)送來的數(shù)據(jù),如果有客戶請求連接,服務器就接受連接;連接成功后,服務器端顯示客戶的IP 地址和端口號,并向請求連接的客戶發(fā)送“ I am a server!”信息;如果發(fā)送過程正確完成,顯示所發(fā)送的字節(jié)數(shù)對客戶信息的管理,容并不復雜。因此制作一個TCP
7、客戶端和服務器程序是有必要的。綜上所述,科研管理信息系統(tǒng)的開發(fā)從數(shù)據(jù)庫技術、軟件技術、硬件技術方面均具有可行性。2.2 操作可行性分析根據(jù)要求本系統(tǒng)需要操作界面友好,界面美觀,使用簡單方便,系統(tǒng)穩(wěn)定性好,安全可靠。本系統(tǒng)是高??蒲泄芾硇畔⑾到y(tǒng),獲取的本機名,用來解析得到本機的IP 地址的;接著就綁定 IP 地址成功, 然后服務器就處于監(jiān)聽狀態(tài),等待客戶端的連接。也就是接下來就是TCP/IP 的三次握手的操作,該操作成功了服務器和客戶端就可以進行通信了。綜合科研管理信息系統(tǒng)的各項簡潔操作,本系統(tǒng)在操作上是可行的。.專業(yè) .整理 .下載可編輯2.3 經(jīng)濟可行性分析硬件方面,一臺普通的計算機上就可以
8、實現(xiàn)本次編程,一般的I5 雙核四線程或者 AMD的四核 CPU,可以滿足要求了。 對于復雜的通信與開發(fā), 計算機能夠充分發(fā)揮它的優(yōu)越性??偟膩碚f,此次編程對電腦要求不會很高,后期運行對系統(tǒng)也無過高要求。所以,從經(jīng)濟角度來講,開發(fā)本程序是可行的。.專業(yè) .整理 .下載可編輯3 需求分析TCP協(xié)議提供的是可靠的、 面向連接的傳輸控制協(xié)議, 即在傳輸數(shù)據(jù)前要先建立邏輯連接,然后再傳輸數(shù)據(jù), 最后釋放連接3 個過程。TCP提供端到端、 全雙工通信;采用字節(jié)流方式,如果字節(jié)流太長,將其分段;提供緊急數(shù)據(jù)傳送功能。本次課程設計的題目是TCP服務器與客戶端軟件,使用TCP協(xié)議實現(xiàn)客戶端與服務器之間的通信。軟
9、件針對局域網(wǎng)部用戶,實現(xiàn)用戶間的即時通信。需要分別實現(xiàn)服務器端和客戶端的軟件設計。TCP要求在發(fā)送數(shù)據(jù)之前必須打開連接。服務器應用程序必須執(zhí)行一個稱作被動打開( passive open )的操作,以利用一個已知的端口號創(chuàng)建一個,這是,服務器并不是對網(wǎng)絡進行呼叫,而是偵聽并等待引入的請求。客戶應用程序必須執(zhí)行一個主動打開( active open),為此,它向服務器應用程序發(fā)送一個同步序列號(SYN)以標識連接??蛻魬贸绦蚩梢詫討B(tài)端口號作為本地端口使用。服務器必須向客戶發(fā)送一個確認( ACK)以及服務器的序列號(SYN)。隨后,客戶回復一個ACK,這樣就建立了。.專業(yè) .整理 .下載可編輯
10、4 系統(tǒng)設計系統(tǒng)設計要回答“怎么做”, 即如何實現(xiàn)系統(tǒng)說明書規(guī)定的系統(tǒng)功能。在這一階段 , 要根據(jù)實際的技術條件 , 經(jīng)濟條件和社會條件確定系統(tǒng)的實施方案 , 即系統(tǒng)的物理模型。4.1 系統(tǒng)結(jié)構(gòu)套接字這個術語并沒有定義某個協(xié)議:它具有兩層含義,但兩者都與一個協(xié)議相關。第一個含義是套接字編程API,它最初由伯克利大學為BSDUNIX而創(chuàng)建。 BSD套接字在經(jīng)過修改后被用作Windows 環(huán)境的編程接口(并且被命名為WinSock)。WinSock API 被包裝在命名空間的 .NET 類中。WindowsSockets是一個獨立于協(xié)議的編程接口,用于編寫網(wǎng)絡應用程序。套接字的第二層含義表示一個用
11、于在進程間進行通信的終端。在TCP/IP 中,每個終端都與一個IP 地址和一個端口號綁定。我們必須對流式套接字和數(shù)據(jù)報套接字這兩種類型進行區(qū)分。流失套接字用 TCP/IP 協(xié)議來使用面向連接的通信。使用 TCP 套接字編程可以實現(xiàn)基于TCP/IP協(xié)議的面向連接的通信,它分為服務器端和客戶端兩部分,其主要實現(xiàn)過程如圖4.1 所示。.專業(yè) .整理 .下載可編輯圖 4.14.2 執(zhí)行步驟服務器端步驟: 使用 socket() 創(chuàng)建套接字; 將創(chuàng)建的套接字綁定到指定的地址結(jié)構(gòu); 設置套接字為監(jiān)聽模式,進入被動接受連接狀態(tài); 接受請求,建立連接; 讀寫數(shù)據(jù); 終止連接。.專業(yè) .整理 .下載可編輯客戶端
12、步驟: 創(chuàng)建套接字; 與遠程服務器建立連接; 讀/ 寫數(shù)據(jù); 終止連接。.專業(yè) .整理 .下載可編輯5 詳細設計詳細設計的主要任務是設計每個模塊的實現(xiàn)算法、所需的局部數(shù)據(jù)結(jié)構(gòu)。詳細設計的目標有兩個:實現(xiàn)模塊功能的算法要邏輯上正確和算法描述要簡明易懂。5.1模型結(jié)構(gòu)客戶機 / 服務器模型,又稱為Client/Server模型,簡稱 C/S 架構(gòu)。 C/S 計算技術在信息產(chǎn)業(yè)當中占有重要的地位。這種客戶機 / 服務器模型是一種非對稱式編程模式。該模式的基本思想是把集中在一起的應用劃分成為功能不同的兩個部分 , 分別在不同的計算機上運行,通過它們之間的分工合作來實現(xiàn)一個完整的功能。對于這種模式而言其
13、中一部分需要作為服務器,用來響應并為客戶提供固定的服務;另一部分則作為客戶機程序用來向服務器提出請求或要求某種服務。在此“服務器”是指能在網(wǎng)絡上提供服務的任何程序。服務器接受網(wǎng)絡上的請求,完成服務后將結(jié)果返回給申請者。對于簡單的服務,把每個請求用一個 IP 數(shù)據(jù)報發(fā)給服務器,服務器用另一個數(shù)據(jù)報返回響應。嚴格說來,客戶機 / 服務器模型并不是從物理分布的角度來定義,它所體現(xiàn)的是一種網(wǎng)絡數(shù)據(jù)訪問的實現(xiàn)方式。采用這種結(jié)構(gòu)的系統(tǒng)目前應用非常廣泛。各種網(wǎng)絡服務器基本都遵循同樣的算法 : 創(chuàng)建一個端口 (Port) ,接受從網(wǎng)絡上來的客戶服務請求,完成計算后把結(jié)果返回給客戶,如此反復。5.2 功能分析服
14、務器與客戶端的交互過程如圖所示:.專業(yè) .整理 .下載可編輯圖 5.1 建立連接部分圖 5.2 等待數(shù)據(jù)傳輸部分.專業(yè) .整理 .下載可編輯圖 5.3 關閉連接部分5.3 設計與實現(xiàn)本程序?qū)崿F(xiàn)一個客戶端基礎類(TCPClientBase )和服務器端基礎類(TCPServerBase),其中客戶端基礎類有兩種方式,一種是使用于單獨的客戶端的單元;另一種使用與服務器端接收一個后的單元流程圖如圖5.4 所示。.專業(yè) .整理 .下載可編輯圖 5.4 流程圖.專業(yè) .整理 .下載可編輯6 系統(tǒng)調(diào)試與測試系統(tǒng)調(diào)試與測試主要是指通過對系統(tǒng)的反復調(diào)試與測試,找出系統(tǒng)還存在的錯誤或不足,最后糾正錯誤或不足,期
15、望系統(tǒng)達到最優(yōu)效果。6.1 系統(tǒng)調(diào)試調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關的問題所在。本系統(tǒng)調(diào)試過程中遇到問題、原因和解決方法如下面介紹。出現(xiàn)的問題:字符信息不能正常顯示從程序中讀出來的信息是亂碼,只有數(shù)字讀出來是正常的,而對于字符讀出來卻都是亂碼。經(jīng)過查詢資料和反復嘗試,終于能正常顯示。原來是忘記了加上引號,改正后,顯示正常。6.2 系統(tǒng)測試測試是程序的一種執(zhí)行過程,目的是盡可能發(fā)現(xiàn)并改正被測試程序中的錯誤,提高程序的可靠性。它是程序生命周期中一項非常重要且非常復雜的工作,對軟件可靠性保證具有極其重要的意義。在目前形式化方法和程序正確性證明技術還無望成為實用性
16、方法的情況下,軟件測試在將來相當一段時間仍然是軟件可靠性保證的有效方法。軟件工程的總目標是充分利用有限的人力和物力資源,高效率、高質(zhì)量地完成軟件開發(fā)項目。不足的測試勢必使軟件帶著一些未揭露的隱藏錯誤投入運行,這將意味著更大的危險讓用戶承擔。過度測試則會浪費許多寶貴的資源。到測試后期,即使找到了錯誤,然而付出了過高的代價。調(diào)試過程主要是運行編制好的程序,然后遇到錯誤后根據(jù)系統(tǒng)的提示,找到相關的問題所在。經(jīng)過不斷的努力,本系統(tǒng)調(diào)試過程中遇到的問題終于一一解決。.專業(yè) .整理 .下載可編輯7 結(jié) 論經(jīng)過將近半個月的設計與開發(fā),TCP客戶端與服務器程序基本開發(fā)完畢,其功能基本符合需求,能夠完成客戶端與
17、服務器的通信。對于數(shù)據(jù)的一致性的問題也通過程序進行了有效的解決。系統(tǒng)設計為整個程序構(gòu)建了骨架,各個功能模塊實現(xiàn)各個細節(jié)部分。利于使用者在需要之時快速連接服務器。但是由于課程設計時間較短,所以該系統(tǒng)還有許多不盡人意的地方比如通信方式比較單一,用戶界面不夠美觀,幫助系統(tǒng)不夠完善,出錯處理不夠等多方面問題。這些都有待于進行進一步改善。.專業(yè) .整理 .下載可編輯參考文獻1 龔沛曾 , 志強 .C/C+程序設計教程 . 高等教育 ,2004 年2 譚獻海網(wǎng)絡編程技術及應用 , 北京:清華大學, 2006.123 吳功宜,董大凡 . 計算機網(wǎng)絡高級軟件編程技術 , 北京:清華大學, 2008.1.專業(yè)
18、.整理 .下載可編輯附錄 1用戶手冊點擊運行,彈出程序界面,如圖1 所示。圖 1 程序運行界面圖中顯示了 TCP客戶端與服務器的程序運行界面, 接受信息并統(tǒng)計出發(fā)送信息的字節(jié)數(shù)的情況。.專業(yè) .整理 .下載可編輯附錄 2源程序主要模塊源代碼清單:# include <stdio.h># include <winsock2.h>#pragma comment(lib, "WS2_32") /到 WS2_32.lib#define PORT 6000 /此服務器監(jiān)聽的端口號#define BUFFERLEN 1024 /數(shù)據(jù)緩沖區(qū)大小void main(
19、)/ 通過載入 Winsock 庫,來使用 Winsock 的相關函數(shù)WSADATA wsaData; /用來返回Winsock 庫的詳細信息WORD version = MAKEWORD(2, 2);int ret = WSAStartup(version, &wsaData);if(ret != 0)printf("加載 Winsock 庫錯誤 ! n");return ;SOCKET sListen;/聲明服務器端監(jiān)聽套接sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (INVALID_SOCKET=sLi
20、sten)printf("創(chuàng)建套接字失?。?dn",WSAGetLastError();return;.專業(yè) .整理 .下載可編輯/設置服務器端地址struct sockaddr_in addrSrv;addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(PORT);if (SOCKET_ERROR=bind(sListen,(sockaddr *)&addrSrv,sizeof(addrSrv)printf("綁定失?。?%dn",WSAGetLastError();return;if (SOCKE
21、T_ERROR=listen(sListen,5)printf("監(jiān)聽失?。?%dn",WSAGetLastError();return;printf(" TCP服務器正在運行.n n");SOCKET SockConn;sockaddr_in addrClient;/聲明存放來自客戶端的地址int addrlen=sizeof(addrClient);/初始化客戶端地址長度char sendBufBUFFERLEN;/用戶發(fā)送緩沖區(qū)char recvBufBUFFERLEN;/用戶接收緩沖區(qū)int sendlen;/發(fā)送數(shù)據(jù)長度int recvlen;
22、/接收數(shù)據(jù)長度SOCKET sockClient;/聲明客戶端套接字/socket(協(xié)議地址族 , 套接字類型 , 協(xié)議 ); 創(chuàng)建套接字sockClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);.專業(yè) .整理 .下載可編輯if ( INVALID_SOCKET =sockClient)printf("創(chuàng)建套接字失?。?dn",WSAGetLastError();return ;if(SOCKET_ERROR=connect(sockClient,(sockaddr*)&addrSrv,sizeof(addrSrv)pri
23、ntf("連接失?。?%dn",WSAGetLastError();return;printf("連接到服務器n");SockConn=accept(sListen,(sockaddr*)&addrClient,&addrlen);if (INVALID_SOCKET=SockConn)printf("接受客戶端連接失敗:%dn",WSAGetLastError();/ continue;sprintf(sendBuf,"I am a client!"); /while(true)sendlen=s
24、end(sockClient,sendBuf,strlen(sendBuf)+1,0);printf("發(fā)送到服務器的數(shù)據(jù):%s;字節(jié)數(shù)%dn",sendBuf,sendlen);if (SOCKET_ERROR=sendlen).專業(yè) .整理 .下載可編輯printf("發(fā)送到服務器失?。?d n",WSAGetLastError();return;printf("客戶端的連接IP:%s,端口:%dn",inet_ntoa(addrClient.sin_addr), ntohs(addrClient.sin_port);printf("發(fā)送到服務器的數(shù)據(jù):%s;字節(jié)數(shù)%dn",sendBuf,sendlen);recvlen=recv(SockConn,recvB
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護士入院考試試題及答案
- 護理中考試試題及答案
- 河南測繪考試試題及答案
- 古箏樂理考試試題及答案
- 高中英語合格性考試試題及答案
- 高一信息考試題及答案
- 前列腺癌內(nèi)分泌治療的護理
- 宣廣高速公路有限責任公司招聘筆試真題2024
- 2024年新疆機場有限責任公司招聘考試真題
- 半年護理工作總結(jié)
- 遷往各地的隴西李氏
- 1000MW超超臨界火電機組深度調(diào)峰研究
- 福建省公共建筑能耗標準
- 醫(yī)?;鸨O(jiān)管知識考試題庫300題(含答案)
- 冷庫pcuocu應用培訓
- 源網(wǎng)荷儲一體化綠色供電工業(yè)園區(qū)示范項目環(huán)評可研資料環(huán)境影響
- 廣東省普通高中學生檔案
- 《水處理氣浮技術指南》
- 《大學法語簡明教程》課件
- 采購管理的綠色采購與可持續(xù)發(fā)展
- 礦產(chǎn)資源評估報告
評論
0/150
提交評論