基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)_第1頁(yè)
基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)_第2頁(yè)
基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)_第3頁(yè)
基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)_第4頁(yè)
基于cs結(jié)構(gòu)的套接字程序設(shè)計(jì)(tcp)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì) 基于C/S結(jié)構(gòu)的套接字程序設(shè)計(jì)(TCP) 學(xué)院:信息技術(shù)工程學(xué)院 班級(jí):計(jì)科1011班 姓名:周玲玲 學(xué)號(hào): 02210101140 指導(dǎo)老師: 黃彥目錄 1、引言-1 課題目的及要求-2 研究設(shè)想-2 相關(guān)理論-2 預(yù)期結(jié)果-2 2、關(guān)鍵詞-2 3、正文-3 理論基礎(chǔ)-3 設(shè)計(jì)方法及思路-3 編程方法-4 主要內(nèi)容及其分析-6 實(shí)驗(yàn)結(jié)果及對(duì)其討論-9 4、結(jié)論-10 核心-10 難點(diǎn)-10 問題-10不足及對(duì)其改進(jìn)-105、致謝-11 6、參考文獻(xiàn)-11 引言基于C/S結(jié)構(gòu)的套接字程序設(shè)計(jì)(TCP)1、目的及要求(1)目的和意義通過編程了解C/S結(jié)構(gòu)的網(wǎng)絡(luò)通信模型;掌握基

2、于C/S結(jié)構(gòu)的Windows Socket TCP的程序設(shè)計(jì)方法。(2)基本要求按照C/S模型編寫兩個(gè)程序。一個(gè)為客戶端程序,另一是服務(wù)器端程序;對(duì)于C/S兩端都應(yīng)輸出必要的日志、出錯(cuò)或診斷信息。(3)小組人數(shù):22、研究設(shè)想 能夠?qū)崿F(xiàn)當(dāng)客戶端向服務(wù)器端發(fā)送請(qǐng)求時(shí),服務(wù)器端能夠向客戶端傳送數(shù)據(jù)。3、相關(guān)理論 TCP是一種面向鏈接的,可靠的傳輸協(xié)議。TCP協(xié)議在網(wǎng)絡(luò)層IP協(xié)議的基礎(chǔ)上,向應(yīng)用層用戶進(jìn)程提供可靠地全雙工的數(shù)據(jù)流傳輸。并且通過創(chuàng)建的流式套接字實(shí)現(xiàn)服務(wù)器端與客戶端的數(shù)據(jù)傳送。4、預(yù)期結(jié)果 實(shí)現(xiàn)服務(wù)器端與客戶端的數(shù)據(jù)傳送。關(guān)鍵詞流式套接字;TCP/IP;服務(wù)器/客戶端; 正文1、理論基礎(chǔ)

3、應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCPIP協(xié)議交互提供了稱為套接字(Socket)的接口,區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接。網(wǎng)絡(luò)化的應(yīng)用程序在開始任何通訊之前都必需要?jiǎng)?chuàng)建套接字。Socket可以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端點(diǎn),一個(gè)程序?qū)⒁欢涡畔懭隨ocket中,該Socket將這段信息發(fā)送給另外一個(gè)Socket中,使這段信息能傳送到其他程序中。套接字,是支持TCP/IP的網(wǎng)絡(luò)通信的基本操作

4、單元,可以看做是不同主機(jī)之間的進(jìn)程進(jìn)行雙向通信的端點(diǎn),簡(jiǎn)單的說就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來完成通信過程。流套接字用于提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù)。該服務(wù)將保證數(shù)據(jù)能夠?qū)崿F(xiàn)無差錯(cuò)、無重復(fù)發(fā)送,并按順序接收。流套接字之所以能夠?qū)崿F(xiàn)可靠的數(shù)據(jù)服務(wù),原因在于其使用了傳輸控制協(xié)議,即TCP(The Transmission Control Protocol)協(xié)議。2、設(shè)計(jì)方法及思路客戶機(jī)與服務(wù)器建立連接,連接是通過申請(qǐng)的套接字實(shí)現(xiàn)的客戶打開一個(gè)套接字并把它約束在一個(gè)端口上如果成功就相當(dāng)于建立一個(gè)虛擬文件以后就可以在虛擬文件上寫數(shù)據(jù)并通過網(wǎng)絡(luò)向外傳送,完成連接后就可以通信了??蛻魴C(jī)

5、向服務(wù)器發(fā)送請(qǐng)求,打開一個(gè)連接后,客戶機(jī)把請(qǐng)求消息送到服務(wù)器的停留端口上,完成提出請(qǐng)操作。服務(wù)器在處理完客戶的請(qǐng)求之后,要向客戶機(jī)發(fā)送響應(yīng)消息??蛻艉头?wù)器雙方都可以通過關(guān)閉套接字來結(jié)束TCP/IP對(duì)話。當(dāng)使用TCP/IP協(xié)議一發(fā)客戶服務(wù)器服務(wù)程序時(shí),服務(wù)器需要等待任意數(shù)量客戶端的連接,以便以他們提供服務(wù)??蛻舳诉B接服務(wù)器時(shí),必須先知道服務(wù)器的名稱。在TCP/IP中,就是服務(wù)器的IP地址和端口號(hào)。bind()函數(shù)實(shí)現(xiàn)將服務(wù)器綁定到一個(gè)已知的名字上的功能。接下來要將服務(wù)器套接字設(shè)置為監(jiān)聽狀態(tài),這是通過listen()函數(shù)完成的。在監(jiān)聽狀態(tài)下,如果客戶端向服務(wù)器發(fā)起連接請(qǐng)求,服務(wù)器通過調(diào)用acce

6、pt()函數(shù)來接受該接連請(qǐng)求。服務(wù)器與客戶端完成連接后,就可以進(jìn)行數(shù)據(jù)通信了。對(duì)客戶端來說,首先調(diào)用connect()函數(shù)向服務(wù)器發(fā)出連接請(qǐng)求。如果服務(wù)器接受了該請(qǐng)求,接下來就可以與服務(wù)器通信了。開發(fā)套接字應(yīng)用程序時(shí),首先應(yīng)進(jìn)行Windows Sockets的初始化,加載Windows Sockets的實(shí)現(xiàn),然后創(chuàng)建套接字,對(duì)TCP套接字來說,需要在socket()函數(shù)或都WSASocket()函數(shù)中指明SOCK_STREAM套接字類型。當(dāng)服務(wù)器和客戶端通信結(jié)束時(shí),關(guān)閉套接字,釋放Windows Sockets的實(shí)現(xiàn)。流程如下:服務(wù)器:創(chuàng)建套接字>綁定>監(jiān)聽>接受連接>

7、收發(fā)數(shù)據(jù)>關(guān)閉客戶端:創(chuàng)建套接字>連接>收發(fā)數(shù)據(jù)>關(guān)閉3、編程方法TCP/TP流式套接字的編程步驟 (客戶端程序 ) 1)加載套接字庫(kù) 2)創(chuàng)建套接字(socket)。  3)向服務(wù)器發(fā)出連接請(qǐng)求(connect)。 4)和服務(wù)器端進(jìn)行通信(send/recv)。 5)關(guān)閉套接字。 socket->connect->send/recv  我的客戶端所要用到的主要函數(shù)是recv()函數(shù)recv()函數(shù)和WSARevc()函數(shù)用于接受數(shù)據(jù)。recv()函數(shù)聲明如下:int recv(SOCKE

8、T s,char FAR* buf,int len,int flags);send()函數(shù)send()和WSASend()函數(shù)用于發(fā)送數(shù)據(jù)。send()函數(shù)聲明如下:int send(SOCKET s,const char FAR* buf,int len,int flags);connect()函數(shù)connect()函數(shù)實(shí)現(xiàn)連接服務(wù)器功能。該函數(shù)聲明如下:int connect(SOCKET s,const struct sockaddr FAR* name,int namelen);closesocket()函數(shù)closesocket()函數(shù)關(guān)閉套接字,釋放后占資源。該函數(shù)聲明如下:int

9、 closesocket(SOCKET s);4、主要內(nèi)容及對(duì)其分析客戶端源程序#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、流式套接字,返回套接字號(hào)ClientSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);/創(chuàng)建客戶端套接字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);/同服務(wù)器端端口地址Serv

12、erAddr.sin_addr.s_addr=inet_addr(ServerIPAddr);/服務(wù)器端IP地址/2.將套接字與服務(wù)器建立連接Result=connect(ClientSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr);/將套接字與服務(wù)器建立連接if(Result<0)printf("connect failed with error%dn",WSAGetLastError();return 0;/3.發(fā)送請(qǐng)求給服務(wù)器SendLength=send(ClientSocket,SendData,str

13、len(SendData),0);/在套接字上發(fā)送信息if(SendLength<0)printf("send failed with error%dn",WSAGetLastError();return 0;else printf("發(fā)送的信息:%sn",SendData);int ReceiveLen;/4.接收服務(wù)器發(fā)來的數(shù)據(jù)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)/關(guān)閉客戶端套接字printf("closesocket failed with error%dn",WSAGetLastError();

15、if(WSACleanup()=SOCKET_ERROR)/注銷,并釋放資源printf("WSACleanup failed with error%dn",WSAGetLastError(); system("PAUSE"); return EXIT_SUCCESS;當(dāng)客戶端已經(jīng)與服務(wù)器建立連接后,那么我的客戶端程序就可以向服務(wù)器端發(fā)送數(shù)據(jù)請(qǐng)求,等待服務(wù)器響應(yīng),之后將接受客戶端發(fā)送過來的數(shù)據(jù),當(dāng)完成數(shù)據(jù)接受后,可以關(guān)閉連接。5、實(shí)驗(yàn)結(jié)果及對(duì)其討論服務(wù)器端發(fā)送數(shù)據(jù),客戶端能夠成功地接受數(shù)據(jù)結(jié)論我們組這次做的課題的核心就是通過套接字在客戶端和服務(wù)器之間建立

16、連接,在建立連接之后實(shí)現(xiàn)客戶端與服務(wù)器之間的通信,難點(diǎn)是在設(shè)計(jì)程序方面,既因?yàn)樯婕跋嚓P(guān)函數(shù)的調(diào)用,又因?yàn)槲议_始對(duì)套接字的應(yīng)用不熟悉。這里面涉及些問題什么是套接字,什么是流式套接字,為什么用流式套接字。套接字,是支持TCP/IP的網(wǎng)絡(luò)通信的基本操作單元,可以看做是不同主機(jī)之間的進(jìn)程進(jìn)行雙向通信的端點(diǎn),簡(jiǎn)單的說就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來完成通信過程,它的存在是為了區(qū)別不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接。流套接字用于提供面向連接、可靠的數(shù)據(jù)傳輸服務(wù),又因?yàn)樵摲?wù)將保證數(shù)據(jù)能夠?qū)崿F(xiàn)無差錯(cuò)、無重復(fù)發(fā)送,并按順序接收,所以用了流式套接字。我們做的課題不足之處是不能實(shí)現(xiàn)雙向傳送數(shù)據(jù),還

17、需要設(shè)計(jì)客戶端向服務(wù)器端的數(shù)據(jù)傳送,那么就需要在客戶端程序中設(shè)計(jì)監(jiān)聽,接受服務(wù)器端的請(qǐng)求信息,以及向服務(wù)端發(fā)送數(shù)據(jù)這幾部分。致謝真誠(chéng)感謝黃彥老師您在我們課程設(shè)計(jì)階段給予我們的指導(dǎo)和幫助,您的指導(dǎo)使我對(duì)網(wǎng)絡(luò)專業(yè)知識(shí)方面有了更深的認(rèn)識(shí),并且您嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。在此謹(jǐn)向您致以誠(chéng)摯的謝意和崇高的敬意。感謝和我一起努力的同學(xué),我們?cè)谙嗷ビ懻撝胁粩嗟馗恼绦虿⑶腋髯蕴岢鲎约旱挠^點(diǎn)然后討論,形成新的思路和想法,使得我們的課題能夠成功完成,希望我們以后還能一起合作。在此致以真誠(chéng)的謝意。參考文獻(xiàn)計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)吳功宜、胡曉英、張仁、何云、王寧編著 機(jī)械工

18、業(yè)出版社; 網(wǎng)絡(luò)上的關(guān)于套接字編程的課件計(jì)算機(jī)時(shí)代2021 年07期 基于TCP/IP協(xié)議的WinSock網(wǎng)絡(luò)編程及應(yīng)用程詠喜  蔣珉   教師見習(xí)報(bào)告總結(jié)期待已久的見習(xí)已經(jīng)結(jié)束了,在龍巖三中高中部見習(xí)聽課,雖然只是短短的兩個(gè)星期,但感觸還是蠻深的,以前作為一名學(xué)生坐在課室聽課,和現(xiàn)在作為一名準(zhǔn)教師坐在課室聽課是完全不同的感受,感覺自己學(xué)到了一些在平時(shí)課堂上學(xué)不到的東西。在這里,我獲得的不僅是經(jīng)驗(yàn)上的收獲,更多是教學(xué)管理,課堂教學(xué)等的理念,以及他們帶給我的種種思考。教育見習(xí)實(shí)踐過程:聽課。教育見習(xí)的主要目的是讓學(xué)生在指導(dǎo)教師的引導(dǎo)下,觀摩教師上課方法、技

19、巧等。聽課是教育見習(xí)的主要內(nèi)容。我院規(guī)定在一周的見習(xí)中需完成至少6課的見習(xí)任務(wù)。我在教師的安排指導(dǎo)下,分別對(duì)高一、高二物理專業(yè)課型為主,其他課型齊頭的方式,積極主動(dòng)的完成了聽課任務(wù),收到良好的效果。我聽的第一節(jié)課是高二(8)班,這是一個(gè)平衡班,水平不如實(shí)驗(yàn)班高。在上課前??迫卫蠋熞呀?jīng)跟我說了這個(gè)班的紀(jì)律是比較差的,而且成績(jī)也不是很好。在我聽課期間,確實(shí)有幾個(gè)學(xué)生在課堂上說話,但是我發(fā)現(xiàn)了一個(gè)有趣的現(xiàn)象,這個(gè)現(xiàn)象我在往后的幾個(gè)班都發(fā)現(xiàn)了,就是絕大部分的學(xué)生的學(xué)習(xí)熱情都好高漲,積極舉手發(fā)言,積極參與課堂活動(dòng)。我跟老師們提起這個(gè)現(xiàn)象的時(shí)候,科任老師就跟我說,一個(gè)班里不可能所有的學(xué)生都能全神貫注地聽完

20、一節(jié)課,所以作為一名教師,應(yīng)該想辦法吸引學(xué)生的注意力,調(diào)動(dòng)的積極性,比如可以以小組為單位,以搶答計(jì)分的形式調(diào)動(dòng)學(xué)生的積極性,這樣課堂氣氛就會(huì)活躍起來了。在為期兩周的見習(xí)工作中,我真的有很大的感觸,我第一次感受到自己已經(jīng)從一名學(xué)生向一名教師靠近,走在校園里,每當(dāng)有學(xué)生叫我一聲老師,我在感到無比自豪的同時(shí),還感受到了自己的責(zé)任。見習(xí)工作結(jié)束了,我要回到學(xué)校繼續(xù)我的學(xué)習(xí)了,但是我會(huì)好好記住我從*中學(xué)學(xué)到的一切,并應(yīng)用于我的專業(yè)學(xué)習(xí)中去。一、教學(xué)管理理念 在龍巖三中,從領(lǐng)導(dǎo)階層到一位普通的科任老師,都秉承以學(xué)生為主體的宗旨進(jìn)行學(xué)校的管理,進(jìn)行教學(xué)工作的開展。作為一個(gè)課程改革的示范學(xué)校,一個(gè)教

21、育實(shí)驗(yàn)基地。這所學(xué)校鼓勵(lì)著老師做各種研究,各種改革。每個(gè)班主任都有著自己的管理經(jīng)驗(yàn)與管理宗旨。有了這種思想的自由,自然這里也就充滿著探索與嘗試,從而有所創(chuàng)造與進(jìn)步。在我見習(xí)的班集體中,班主任對(duì)他的學(xué)生說:“我要讓你們成為學(xué)習(xí)型的管理者,也是管理型的學(xué)習(xí)者?!边@樣一句簡(jiǎn)單的話,讓我感到這里老師進(jìn)行班級(jí)管理的良苦用心。他們關(guān)心的不只是學(xué)生的學(xué)習(xí),更多的是從一個(gè)完整的人的概念出發(fā),去培養(yǎng)學(xué)生多方面的素質(zhì)。二、教學(xué)理念 在見習(xí)期間,借著錄課的機(jī)會(huì),我聽了很多的市級(jí),校級(jí)的公開棵,還有理科實(shí)驗(yàn)班的課。在這些課堂上,讓我看到教學(xué)改革正在悄然進(jìn)行,有意識(shí)的老師正在努力體會(huì)“以學(xué)生為主體”的課堂模式

22、。學(xué)生的創(chuàng)造也逐步成為教師追求的教學(xué)效果。其次,這里的老師也都在適應(yīng)著多媒體教學(xué),信息化教學(xué),使得課堂更加生動(dòng),資源更加豐富,學(xué)生獲取學(xué)習(xí)資源的渠道也就更多。盡管,這種教學(xué)理念、教學(xué)模式的推廣仍然有很長(zhǎng)的路,但似乎也并不遙遠(yuǎn),相信,這股改革的浪潮會(huì)給教育領(lǐng)域帶來很大的沖擊。 三、實(shí)際工作經(jīng)驗(yàn) 在上面,是我在這所學(xué)校感受最深刻,也是認(rèn)為最有意義的收獲。實(shí)際工作經(jīng)驗(yàn)上,由于在指導(dǎo)老師的指導(dǎo)下,也獲取了許多。 在班主任工作上,我認(rèn)識(shí)到了一個(gè)老師的表率作用是很大的,學(xué)生時(shí)刻看老師,作為一個(gè)老師,應(yīng)該從自己嚴(yán)格要求,并影響感染學(xué)生。這就要求師生之間的相互交流必須是貼心的,也是帶有希望的。見習(xí)期間,班主任老師教給了我許多的班級(jí)管理經(jīng)驗(yàn)。我想這些經(jīng)驗(yàn)是寶貴的,更為寶貴的是老師的主動(dòng)精神。在他的言談中,看出一個(gè)老師對(duì)于班級(jí)管理的深度認(rèn)識(shí)。所以我想:一個(gè)好的班主任不應(yīng)只是從學(xué)習(xí)上給學(xué)生幫助,而是從一種“管理”

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論