东北大学计算机网络试验报告_第1页
东北大学计算机网络试验报告_第2页
东北大学计算机网络试验报告_第3页
东北大学计算机网络试验报告_第4页
东北大学计算机网络试验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络实验报告实验名称Tcp与Udp的通信实现班级软信1101学号20112329姓名杜海涛日期2013-7-13成绩评阅人软件学院实验目的与意义IP,端1、编写Tcp服务器与客户端程序,服务器程序在客户端连接后输出客户端信息( 口号)2、编写Tcp服务器与客户端程序,客户端在连接后可从键盘输入字符,在服务器端实时 显3、在2的基础上,服务器判断接收到的字符,如是某指定字符,则服务器退出监听4、编写基于Udp的控制台聊天程序通过tcp和udp的编程实现 windows环境下的进程间的通信。二、实验环境操作系统:Win dows 7实验环境:Microsoft Visual C+6.0三、实

2、验的预习内容传输控制协议 TCP(Tra nsport Con trol Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的 TCP传输需要通过在TCP客户端和TCP服务端建立 特定的虚电路连接来完成,该过程通常被称为“三次握手”。举例说明,TCP客户端需要和TCP服务端建立连接,过程如图所示LSTENTC3 StiteTCP PacketTCP StateCLOSEDSEQ«1)OOfCTLi$YNSYNSENTSYN-RECfIVEDACIMOOh CTLSYNIACKESTARLISHFDSVN-RFCfIVFnSF0.1WArK.7S1,CTl

3、71;ACKFSTABLISHFn第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该 TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的 TCP连接,开始全双工模式的数据传输过程。UDP(User Datagram Protocol ),即用户数据报协议。它属于"面向无连接的不可靠的传输”的类型。UDP中,每个数据包称为“数据

4、报”,它的包头只包含4个域,主要是地址信息与包的长度和校验信息。与此对应,TCP包的头信息有10多个域。因此UDP的网络开销一般要小于 TCP由于UDP在传送数据过程中没有建立连接,也不进行检查,因此UDP是不可靠的,它不能保证数据报能安全无误地到达目的主机。四、实验的步骤与调试方法程序的流程图TCP协议客户端服务器UDP协议下实验: 程序流程图:UDP协议服务器客户端五、实验数据与实验结果Tcpclie ntsiseFfrady to connect 127成功.据input your word:>i am tcp client 戍功发送薮扌启16 >»5,te<

5、s>.input your word>hello there或功发送數据12 bytets>.input your uord:>back准备关闭客户端连接.Press any key to cont inue,TcperverUdp clie ntU 'CU5erski dDeslctopH«tClientDebugN etCJ ient.exePlfrflse inputhello192.168.1.10Please input1 U clientdata:say:hello data:,are ou ok?192,168.1say;i am ok

6、Pl»asfi input ilat:192.168.1.10 saj/:see you kchat end!Press any key to continuesayt hello data:say: i am client . are you ok? data:Udp serverH PU5erslci dDesktGpNetSrvDe bugN etSrv. exe"192>168.1.10Please input hello 192.168.1.IB Please input i Mi o k 192.168.1.10 chat end?Press any ke

7、y to cont inue六、实验用程序清单(要有注释)TCPSERVER:/ Module Name: tcpserver.cpp#in clude <win sock2.h> #in clude <stdio.h>#pragma comme nt(lib, "ws2_32.lib")void mai n(void)WSADATASOCKETSOCKETSOCKADDR_INSOCKADDR_INwsaData;Liste nin gSocket;NewC onnection;ServerAddr;Clie ntAddr;intint chari

8、ntClie ntAddrLe n;Port = 5150;Ret;DataBuffer1024;/ I nitialize Win sock version 2.2if (Ret = WSAStartup(MAKEWORD(2,2), &wsaData) != 0)prin tf("WSAStartup failed with error %dn". Ret);return;/ Create a new socket to liste ning for clie nt connections.if (Liste nin gSocket = socket(AF_IN

9、ET, SOCK_STREAM, IPPROTO_TCP)=INVALID_SOCKET)prin tf("socket failed with error %dn", WSAGetLastError();WSAClea nu p();return;ServerAddr.sin_family = AF_INET;ServerAddr.s in _port = hton s(Port);ServerAddr.sin_addr.s_addr = hton l(INADDR_ANY);/ Associate the address in formati on with the s

10、ocket using bind.if (bi nd(Liste nin gSocket, (SOCKADDR *)& ServerAddr, sizeof(ServerAddr)=SOCKET_ERROR)prin tf("bi nd failed with error %dn", WSAGetLastError();closesocket(Liste nin gSocket);WSAClea nu p();return;/ Liste n for clie nt connections. We used a backlog of 5 which is/ no r

11、mal for many applicati ons.if (liste n(Liste nin gSocket, 5) = SOCKET_ERROR)prin tf("liste n failed with error %dn", WSAGetLastError();closesocket(Liste nin gSocket);WSAClea nu p();return;prin tf("等待客户端连接端口%d.n", Port);/ Accept a new connection whe n one arrives.Clie ntAddrLe n =

12、 sizeof(Clie ntAddr);if (NewCo nn ection = accept(Liste nin gSocket, (SOCKADDR *) & Clie ntAddr,& Clie ntAddrLe n) = INVALID_SOCKET)prin tf("accept failed with error %dn", WSAGetLastError();closesocket(Liste nin gSocket);WSAClea nu p();return;printf(”成功建立连接%sn",inet_n toa(Clie

13、 ntAddr.s in _addr);closesocket(Liste nin gSocket);/ Start sending and receivi ng data on NewC onnection. For simplicity,/ we will just receive some data and report how many bytes were/ received.printf(”等待接收数据.n");printf("IP is %sn",inet_ntoa(ClientAddr.sin_addr); /打印 ip 地址prin tf(&qu

14、ot;port is %dn",hto ns(Clie ntAddr.sin_port); /打印端口号While(flag)接收数if (Ret = recv(NewCo nn ectio n, DataBuffer, sizeof(DataBuffer), 0) /据=SOCKET_ERROR)prin tf("recv failed with error %dn", WSAGetLastError();closesocket(NewC onnection);WSAClea nu p();return;if(i=strcmp(buffer,"back

15、")=O) /如果是指定字符断开连接flag=0;if(flag)*(DataBuffer+Ret)='O:printf("成功接收数据 %s,共 %d byte(s).n", DataBuffer,Ret);printf(" 准备关闭客户端连接.n");closesocket(NewC onn ecti on);/ When your applicati on is fini shed han dli ng the connections/ call WSAClea nup.WSAClea nu p();/ tcpclie nt.ex

16、e <server IP address>/TCPCLIENT:#i nclude <win sock2.h>#in clude <stdio.h>void mai n(void)WSADATAwsaData;SOCKETs;SOCKADDR_IN ServerAddr; intPort = 5150;intRet;Charsen dbuf100;/ I nitialize Win sock version 2.2if (Ret = WSAStartup(MAKEWORD(2,2), &wsaData) != 0)prin tf("WSAS

17、tartup failed with error %dn", Ret); return;/ Create a new socket to make a clie nt conn ecti on.if (s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)=INVALID_SOCKET)prin tf("socket failed with error %dn", WSAGetLastError();WSAClea nu p();return;ServerAddr.sin_family = AF_INET;ServerAddr.

18、s in _port = hton s(Port);本机ipServerAddr.sin_addr.s_addr = in et_addr("127.0.0.1");/ Make a connection to the server with socket s.prin tf("ready to conn ect %s:%d.n",i net_n toa(ServerAddr.s in _addr), hton s(ServerAddr.s in _port);if (co nn ect(s, (SOCKADDR *) & ServerAddr,

19、 sizeof(ServerAddr)=SOCKET_ERROR)prin tf("co nn ect failed with error %dn", WSAGetLastError(); closesocket(s);WSAClea nu p();return;printf(”客户端连接成功.n");/ At this point you can start sending or receivi ng data on/ the socket s. We will just send a hello message to the server.printf(&qu

20、ot;准备传送数据n");while(1)prin tf("i nput your word:");fflush(stdi n);scan f("%s",se ndbuf);prin tf("n");if(strcmp(se ndbuf,"back")=O) /如果是指定字符退出连接break;sen d(s, sen dbuf, sizeof(se ndbuf), 0)if (Ret = sen d(s, sen dbuf, sizeof(se ndbuf), 0) = SOCKET_ERROR)pri

21、n tf("se nd failed with error %dn", WSAGetLastError(); closesocket(s);WSAClea nu p();return;printf(”成功发送数据 %d byte(s).n", Ret);/ When you are fini shed sending and receivi ng data on socket s,/ you should close the socket.printf(" 关闭连接.n");closesocket(s);/ When your applicat

22、i on is fini shed han dli ng the connection, call/ WSAClea nup.WSAClea nu p();UDPSERVER:#i ncludevWi nsock2.h>#i nclude<stdio.h>void main()WORD wVersio nRequested;WSADATA wsaData;int err;wVersio nRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersi on Requested, &wsaData );if ( err !=

23、0 )return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersio n ) != 1 )WSAClea nup(); return;SOCKET sockSrv=socket(AFN ET,SOCK_DGRAM,O); SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_u n.S_addr=hto nl(INADDR_ANY); addrSrv.sin_family=AFN ET;addrSrv.sin_port=hto ns(6000);bin d(sockSrv,(SOCKADDR* )

24、&addrSrv,sizeof(SOCKADDR);char recvBuf100;char sen dBuf100;char tempBuf200;SOCKADDR_IN addrClie nt;int len=sizeof(SOCKADDR);while(1)recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR* )&addrClie nt,&len); if('q'=recvBuf0)sen dto(sockSrv,"q",strle n("q")+1,0,(SOCKADDR* )

25、&addrClie nt,le n); prin tf("chat en d!n");break;sprin tf(tempBuf,"%ssay: %s",i net_n toa(addrClie nt.sin_addr),recvBuf);prin tf("%sn",tempBuf);prin tf("Please in put data:' n"); gets(se ndBuf);sen dto(sockSrv,se ndBuf,strle n(se ndBuf)+1,0,(SOCKADDR*

26、)&addrClie nt ,le n);closesocket(sockSrv);WSAClea nup();UDPCLIENT:#i ncludevWi nsock2.h>#i nclude<stdio.h>void main()WORD wVersio nRequested;WSADATA wsaData;int err;wVersio nRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersi on Requested, &wsaData );if ( err != 0 )return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersio n ) != 1 )WSAClea nup();return;SOCKET sockClie nt=socket(AFN ET,SOCK_DGRAM,0); SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_u n.S_addr=i net_addr("127.0.0.1"); addrSrv.sin_family=AFN ET;addrSrv.sin_port=hto ns(6000);char recv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论