




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機網絡課程設計 基于C/S結構的套接字程序設計(TCP) 學院:信息技術工程學院 班級:計科1011班 姓名:周玲玲 學號: 02210101140 指導老師: 黃彥目錄 1、引言-1 課題目的及要求-2 研究設想-2 相關理論-2 預期結果-2 2、關鍵詞-2 3、正文-3 理論基礎-3 設計方法及思路-3 編程方法-4 主要內容及其分析-6 實驗結果及對其討論-9 4、結論-10 核心-10 難點-10 問題-10不足及對其改進-105、致謝-11 6、參考文獻-11 引言基于C/S結構的套接字程序設計(TCP)1、目的及要求(1)目的和意義通過編程了解C/S結構的網絡通信模型;掌握基
2、于C/S結構的Windows Socket TCP的程序設計方法。(2)基本要求按照C/S模型編寫兩個程序。一個為客戶端程序,另一是服務器端程序;對于C/S兩端都應輸出必要的日志、出錯或診斷信息。(3)小組人數:22、研究設想 能夠實現當客戶端向服務器端發送請求時,服務器端能夠向客戶端傳送數據。3、相關理論 TCP是一種面向鏈接的,可靠的傳輸協議。TCP協議在網絡層IP協議的基礎上,向應用層用戶進程提供可靠地全雙工的數據流傳輸。并且通過創建的流式套接字實現服務器端與客戶端的數據傳送。4、預期結果 實現服務器端與客戶端的數據傳送。關鍵詞流式套接字;TCP/IP;服務器/客戶端; 正文1、理論基礎
3、應用層通過傳輸層進行數據通信時,TCP會遇到同時為多個應用程序進程提供并發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCPIP協議交互提供了稱為套接字(Socket)的接口,區分不同應用程序進程間的網絡通信和連接。網絡化的應用程序在開始任何通訊之前都必需要創建套接字。Socket可以看成在兩個程序進行通訊連接中的一個端點,一個程序將一段信息寫入Socket中,該Socket將這段信息發送給另外一個Socket中,使這段信息能傳送到其他程序中。套接字,是支持TCP/IP的網絡通信的基本操作
4、單元,可以看做是不同主機之間的進程進行雙向通信的端點,簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程。流套接字用于提供面向連接、可靠的數據傳輸服務。該服務將保證數據能夠實現無差錯、無重復發送,并按順序接收。流套接字之所以能夠實現可靠的數據服務,原因在于其使用了傳輸控制協議,即TCP(The Transmission Control Protocol)協議。2、設計方法及思路客戶機與服務器建立連接,連接是通過申請的套接字實現的客戶打開一個套接字并把它約束在一個端口上如果成功就相當于建立一個虛擬文件以后就可以在虛擬文件上寫數據并通過網絡向外傳送,完成連接后就可以通信了。客戶機
5、向服務器發送請求,打開一個連接后,客戶機把請求消息送到服務器的停留端口上,完成提出請操作。服務器在處理完客戶的請求之后,要向客戶機發送響應消息。客戶和服務器雙方都可以通過關閉套接字來結束TCP/IP對話。當使用TCP/IP協議一發客戶服務器服務程序時,服務器需要等待任意數量客戶端的連接,以便以他們提供服務。客戶端連接服務器時,必須先知道服務器的名稱。在TCP/IP中,就是服務器的IP地址和端口號。bind()函數實現將服務器綁定到一個已知的名字上的功能。接下來要將服務器套接字設置為監聽狀態,這是通過listen()函數完成的。在監聽狀態下,如果客戶端向服務器發起連接請求,服務器通過調用acce
6、pt()函數來接受該接連請求。服務器與客戶端完成連接后,就可以進行數據通信了。對客戶端來說,首先調用connect()函數向服務器發出連接請求。如果服務器接受了該請求,接下來就可以與服務器通信了。開發套接字應用程序時,首先應進行Windows Sockets的初始化,加載Windows Sockets的實現,然后創建套接字,對TCP套接字來說,需要在socket()函數或都WSASocket()函數中指明SOCK_STREAM套接字類型。當服務器和客戶端通信結束時,關閉套接字,釋放Windows Sockets的實現。流程如下:服務器:創建套接字>綁定>監聽>接受連接>
7、收發數據>關閉客戶端:創建套接字>連接>收發數據>關閉3、編程方法TCP/TP流式套接字的編程步驟 (客戶端程序 ) 1)加載套接字庫 2)創建套接字(socket)。 3)向服務器發出連接請求(connect)。 4)和服務器端進行通信(send/recv)。 5)關閉套接字。 socket->connect->send/recv 我的客戶端所要用到的主要函數是recv()函數recv()函數和WSARevc()函數用于接受數據。recv()函數聲明如下:int recv(SOCKE
8、T s,char FAR* buf,int len,int flags);send()函數send()和WSASend()函數用于發送數據。send()函數聲明如下:int send(SOCKET s,const char FAR* buf,int len,int flags);connect()函數connect()函數實現連接服務器功能。該函數聲明如下:int connect(SOCKET s,const struct sockaddr FAR* name,int namelen);closesocket()函數closesocket()函數關閉套接字,釋放后占資源。該函數聲明如下:int
9、 closesocket(SOCKET s);4、主要內容及對其分析客戶端源程序#include <winsock2.h>#include<stdio.h>#include <cstdlib>#include <iostream>#include <string.h>#pragma comment(lib,"ws2_32.lib")int main()WSADATA wsaData;SOCKET ClientSocket;SOCKADDR_IN ServerAddr;int ServerPort=4000;char
10、 ServerIPAddr50="127.0.0.1"char*SendData="I am a client.n please send me a string of data!"char ReceiveBuffer1024;int SendLength=-1;int Result=-1;if(Result=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf("WSAStartup failed with error%dn",Result);return 0;/1.socket建立客戶端
11、流式套接字,返回套接字號ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);/創建客戶端套接字if(ClientSocket<0)printf("socket failed with error%dn",WSAGetLastError();return 0;memset(&ServerAddr,0,sizeof(ServerAddr);ServerAddr.sin_family=AF_INET; /地址簇ServerAddr.sin_port=htons(ServerPort);/同服務器端端口地址Serv
12、erAddr.sin_addr.s_addr=inet_addr(ServerIPAddr);/服務器端IP地址/2.將套接字與服務器建立連接Result=connect(ClientSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr);/將套接字與服務器建立連接if(Result<0)printf("connect failed with error%dn",WSAGetLastError();return 0;/3.發送請求給服務器SendLength=send(ClientSocket,SendData,str
13、len(SendData),0);/在套接字上發送信息if(SendLength<0)printf("send failed with error%dn",WSAGetLastError();return 0;else printf("發送的信息:%sn",SendData);int ReceiveLen;/4.接收服務器發來的數據domemset(ReceiveBuffer,0,sizeof(ReceiveBuffer);ReceiveLen=recv(ClientSocket,ReceiveBuffer,sizeof(ReceiveBuffer
14、),0);if(ReceiveLen<0)/在套接字上接受信息printf("Receive failed with error %dn",WSAGetLastError();return 0;elseprintf("接收的信息:%sn",ReceiveBuffer);while(ReceiveLen!=0);if(closesocket(ClientSocket)=SOCKET_ERROR)/關閉客戶端套接字printf("closesocket failed with error%dn",WSAGetLastError();
15、if(WSACleanup()=SOCKET_ERROR)/注銷,并釋放資源printf("WSACleanup failed with error%dn",WSAGetLastError(); system("PAUSE"); return EXIT_SUCCESS;當客戶端已經與服務器建立連接后,那么我的客戶端程序就可以向服務器端發送數據請求,等待服務器響應,之后將接受客戶端發送過來的數據,當完成數據接受后,可以關閉連接。5、實驗結果及對其討論服務器端發送數據,客戶端能夠成功地接受數據結論我們組這次做的課題的核心就是通過套接字在客戶端和服務器之間建立
16、連接,在建立連接之后實現客戶端與服務器之間的通信,難點是在設計程序方面,既因為涉及相關函數的調用,又因為我開始對套接字的應用不熟悉。這里面涉及些問題什么是套接字,什么是流式套接字,為什么用流式套接字。套接字,是支持TCP/IP的網絡通信的基本操作單元,可以看做是不同主機之間的進程進行雙向通信的端點,簡單的說就是通信的兩方的一種約定,用套接字中的相關函數來完成通信過程,它的存在是為了區別不同應用程序進程間的網絡通信和連接。流套接字用于提供面向連接、可靠的數據傳輸服務,又因為該服務將保證數據能夠實現無差錯、無重復發送,并按順序接收,所以用了流式套接字。我們做的課題不足之處是不能實現雙向傳送數據,還
17、需要設計客戶端向服務器端的數據傳送,那么就需要在客戶端程序中設計監聽,接受服務器端的請求信息,以及向服務端發送數據這幾部分。致謝真誠感謝黃彥老師您在我們課程設計階段給予我們的指導和幫助,您的指導使我對網絡專業知識方面有了更深的認識,并且您嚴肅的科學態度,嚴謹的治學精神,精益求精的工作作風,深深地感染和激勵著我。在此謹向您致以誠摯的謝意和崇高的敬意。感謝和我一起努力的同學,我們在相互討論中不斷地改正程序并且各自提出自己的觀點然后討論,形成新的思路和想法,使得我們的課題能夠成功完成,希望我們以后還能一起合作。在此致以真誠的謝意。參考文獻計算機網絡課程設計吳功宜、胡曉英、張仁、何云、王寧編著 機械工
18、業出版社; 網絡上的關于套接字編程的課件計算機時代2021 年07期 基于TCP/IP協議的WinSock網絡編程及應用程詠喜 蔣珉 教師見習報告總結期待已久的見習已經結束了,在龍巖三中高中部見習聽課,雖然只是短短的兩個星期,但感觸還是蠻深的,以前作為一名學生坐在課室聽課,和現在作為一名準教師坐在課室聽課是完全不同的感受,感覺自己學到了一些在平時課堂上學不到的東西。在這里,我獲得的不僅是經驗上的收獲,更多是教學管理,課堂教學等的理念,以及他們帶給我的種種思考。教育見習實踐過程:聽課。教育見習的主要目的是讓學生在指導教師的引導下,觀摩教師上課方法、技
19、巧等。聽課是教育見習的主要內容。我院規定在一周的見習中需完成至少6課的見習任務。我在教師的安排指導下,分別對高一、高二物理專業課型為主,其他課型齊頭的方式,積極主動的完成了聽課任務,收到良好的效果。我聽的第一節課是高二(8)班,這是一個平衡班,水平不如實驗班高。在上課前。科任老師已經跟我說了這個班的紀律是比較差的,而且成績也不是很好。在我聽課期間,確實有幾個學生在課堂上說話,但是我發現了一個有趣的現象,這個現象我在往后的幾個班都發現了,就是絕大部分的學生的學習熱情都好高漲,積極舉手發言,積極參與課堂活動。我跟老師們提起這個現象的時候,科任老師就跟我說,一個班里不可能所有的學生都能全神貫注地聽完
20、一節課,所以作為一名教師,應該想辦法吸引學生的注意力,調動的積極性,比如可以以小組為單位,以搶答計分的形式調動學生的積極性,這樣課堂氣氛就會活躍起來了。在為期兩周的見習工作中,我真的有很大的感觸,我第一次感受到自己已經從一名學生向一名教師靠近,走在校園里,每當有學生叫我一聲老師,我在感到無比自豪的同時,還感受到了自己的責任。見習工作結束了,我要回到學校繼續我的學習了,但是我會好好記住我從*中學學到的一切,并應用于我的專業學習中去。一、教學管理理念 在龍巖三中,從領導階層到一位普通的科任老師,都秉承以學生為主體的宗旨進行學校的管理,進行教學工作的開展。作為一個課程改革的示范學校,一個教
21、育實驗基地。這所學校鼓勵著老師做各種研究,各種改革。每個班主任都有著自己的管理經驗與管理宗旨。有了這種思想的自由,自然這里也就充滿著探索與嘗試,從而有所創造與進步。在我見習的班集體中,班主任對他的學生說:“我要讓你們成為學習型的管理者,也是管理型的學習者。”這樣一句簡單的話,讓我感到這里老師進行班級管理的良苦用心。他們關心的不只是學生的學習,更多的是從一個完整的人的概念出發,去培養學生多方面的素質。二、教學理念 在見習期間,借著錄課的機會,我聽了很多的市級,校級的公開棵,還有理科實驗班的課。在這些課堂上,讓我看到教學改革正在悄然進行,有意識的老師正在努力體會“以學生為主體”的課堂模式
22、。學生的創造也逐步成為教師追求的教學效果。其次,這里的老師也都在適應著多媒體教學,信息化教學,使得課堂更加生動,資源更加豐富,學生獲取學習資源的渠道也就更多。盡管,這種教學理念、教學模式的推廣仍然有很長的路,但似乎也并不遙遠,相信,這股改革的浪潮會給教育領域帶來很大的沖擊。 三、實際工作經驗 在上面,是我在這所學校感受最深刻,也是認為最有意義的收獲。實際工作經驗上,由于在指導老師的指導下,也獲取了許多。 在班主任工作上,我認識到了一個老師的表率作用是很大的,學生時刻看老師,作為一個老師,應該從自己嚴格要求,并影響感染學生。這就要求師生之間的相互交流必須是貼心的,也是帶有希望的。見習期間,班主任老師教給了我許多的班級管理經驗。我想這些經驗是寶貴的,更為寶貴的是老師的主動精神。在他的言談中,看出一個老師對于班級管理的深度認識。所以我想:一個好的班主任不應只是從學習上給學生幫助,而是從一種“管理”
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江省義烏市2024-2025學年物理高二下期末經典模擬試題含解析
- 重慶市江津區高2024-2025學年高二物理第二學期期末統考模擬試題含解析
- 新疆博爾塔拉蒙古自治州第五師中學2024-2025學年高二下數學期末質量檢測模擬試題含解析
- 浙江省杭十四中2025年生物高二第二學期期末教學質量檢測試題含解析
- 重慶市萬州龍駒中學2024-2025學年數學高二第二學期期末質量檢測模擬試題含解析
- 班主任學生德育與行為規范合同
- 成都房產交易風險防范合同
- 進步之星評選方案范文(18篇)
- 護理年終考試復習試題(一)
- 2025社團迎新活動策劃方案(7篇)
- DB32/T 4220-2022消防設施物聯網系統技術規范
- 車位轉讓合同協議書
- 合伙經營貨車輛協議書
- 2025年農村個人果園承包合同
- 湖北省武漢市2025屆高三年級五月模擬訓練試題數學試題及答案(武漢五調)
- 企業管理流程數字化轉型計劃
- 2025年數控技術專業畢業考試試題及答案
- MOOC 地下鐵道-中南大學 中國大學慕課答案
- 六西格瑪DMAIC案例(ppt-85頁)課件
- T∕CAGHP 070-2019 地質災害群測群防監測規范(試行)
- 年產50000噸檸檬酸發酵車間設計
評論
0/150
提交評論