TCP,UDPCLIENT实验报告.docx_第1页
TCP,UDPCLIENT实验报告.docx_第2页
TCP,UDPCLIENT实验报告.docx_第3页
TCP,UDPCLIENT实验报告.docx_第4页
TCP,UDPCLIENT实验报告.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、实验题目:使用Select模型的网络程序设计二、实验目的 熟悉使用select模型进行网络程序设计。三、实验环境硬件环境:奔3以上处理器,512MB以上内存空间软件环境:windows2000以上操作系统,VC6.0编译环境。四、实验内容与完成情况使用select对实验1的程序进行重新设计。1. 使用TCP建立一个服务器和和客户端,客户端可以连接服务器,并向服务器发送数据,服务器收到数据后把数据打印出来并传给客户端。客户端接收后再打印出来。客户端发送数据可以从键盘读入。2. 上述过程使用UDP重复一遍。完成情况:我完成了TCP跟UDP的设计。TCP服务端的设计步骤:首先应该创建套接口,确定协议类型,然后将套接口跟本地地址绑定,进行监听,等待客户端连接的请求的到来,然后准备接收数据,交换数据,把数据返回给客户端,最后关闭TCP连接,关闭服务器。但是要用select模型,首先定义select函数中的变量,设置参数值:fd_set rfd;FD_ZERO(&rfd);struct timeval timeout;timeout.tv_sec=10;timeout.tv_usec=0;u_long ul=1;ioctlsocket(sock2,FIONBIO,&ul);FD_SET(sock2,&rfd);然后就在循环中加入select函数,并给出可能出现的实验结果。int ret=select(0,&rfd,NULL,NULL,&timeout);if (ret=0)printf(time is over!);break;else if (SOCKET_ERROR=ret)printf(SOCKET ERROR!);break;elsememset(rebuff,0,1000);count=recv(sock,rebuff,1000,0);if (count0) break;if(count=0) break; printf(rebuff);TCP客户端的设计步骤:创建套接口,建立连接,跟服务端发送请求,接收数据然后关闭TCP连接,关闭客户端。/地址初始化sai.sin_family=AF_INET;sai.sin_port=htons(4777);sai.sin_addr.s_addr=inet_addr(127.0.0.1);客户端跟服务器端代码基本是一样的:int ret=select(0,&rfd,NULL,NULL,&timeout);if (ret=0)/判断连接是否超时printf(time is over!);break;else if (SOCKET_ERROR=ret)printf(SOCKET ERROR!);break;elsememset(rebuff,0,1000);count=recv(sock,rebuff,1000,0);if (count0) break;if(count=0) break; printf(rebuff);运行结果:UDP发送端:不需要建立连接,发送端步骤:创建套接字后,地址初始化,发送信息,然后关闭套接字。基本变量设置fd_set rfd;struct timeval timeout;timeout.tv_sec=30;timeout.tv_usec=0;FD_ZERO(&rfd);u_long ul=1;int ret;ioctlsocket(sock,FIONBIO,&ul);FD_SET(sock,&rfd); 循环中的语句:scanf(%s,buff);int count=sendto(sock,buff,strlen(buff)+1,0,(struct sockaddr *)&sai,sizeof(sai);ret=select(0, &rfd, NULL, NULL, &timeout); if (ret=0)printf(time is over!);break;else if (SOCKET_ERROR=ret)printf(select error!);break;elsememset(buff,0,1000);/count=recv(sock,buff,1000,0);count=recvfrom(sock,buff,100,0,(struct sockaddr *)&sai,&len);if(count0) break;if(count=0) break;printf(buff);printf(n);接收端:创建套接字,地址初始化,绑定套接字跟端口,接受信息,打印出数据,关闭套接字。sai.sin_addr.s_addr=htonl(INADDR_ANY);bind(sock,(struct sockaddr *)&sai,sizeof(sai);while (1)char buffer100;int len=sizeof(sai);int count=recvfrom(sock,buffer,20,0,(struct sockaddr *)&sai,&len);printf(buffer);fd_set rfd;/fd_set wfd;struct timeval timeout;timeout.tv_sec=30;timeout.tv_usec=0;FD_ZERO(&rfd);u_long ul=1;int ret;循环:ret=select(0, &rfd,NULL, NULL, &timeout); if (ret=0)printf(time is over!);break;else if (SOCKET_ERROR=ret)printf(select error!);break;else/初始化 buff/memset(buff,0,1000);/count=recv(sock2,buff,1000,0);int count=recvfrom(sock,buffer,100,0,(struct sockaddr *)&sai,&len);if(count0) break;if(count=0) break;printf(buffer);printf(n);sendto(sock,buffer,strlen(buffer)+1,0,(struc

温馨提示

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

评论

0/150

提交评论