tcp,udpclient实验报告

上传人:第*** 文档编号:32818718 上传时间:2018-02-12 格式:DOCX 页数:7 大小:373.66KB
返回 下载 相关 举报
tcp,udpclient实验报告_第1页
第1页 / 共7页
tcp,udpclient实验报告_第2页
第2页 / 共7页
tcp,udpclient实验报告_第3页
第3页 / 共7页
tcp,udpclient实验报告_第4页
第4页 / 共7页
tcp,udpclient实验报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《tcp,udpclient实验报告》由会员分享,可在线阅读,更多相关《tcp,udpclient实验报告(7页珍藏版)》请在金锄头文库上搜索。

1、一、实验题目:使用 Select 模型的网络程序设计二、实验目的 熟悉使用 select 模型进行网络程序设计。三、实验环境硬件环境:奔 3 以上处理器, 512MB 以上内存空间软件环境:windows2000 以上操作系统, VC6.0 编译环境。四、实验内容与完成情况使用 select 对实验 1 的程序进行重新设计。1. 使用 TCP 建立一个服务器和和客户端,客户端可以连接服务器,并向服务器发送数据,服务器收到数据后把数据打印出来并传给客户端。客户端接收后再打印出来。客户端发送数据可以从键盘读入。2. 上述过程使用 UDP 重复一遍。完成情况:我完成了 TCP 跟 UDP 的设计。T

2、CP 服务端的设计步骤:首先应该创建套接口,确定协议类型,然后将套接口跟本地地址绑定,进行监听,等待客户端连接的请求的到来,然后准备接收数据,交换数据,把数据返回给客户端,最后关闭 TCP 连接,关闭服务器。但是要用 select 模型,首先定义 select函数中的变量,设置参数值:fd_set rfd;FD_ZERO(struct timeval timeout;timeout.tv_sec=10;timeout.tv_usec=0;u_long ul=1;ioctlsocket(sock2,FIONBIO,FD_SET(sock2,然后就在循环中加入 select 函数,并给出可能出现的

3、实验结果。int ret=select(0,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

4、_INET;sai.sin_port=htons(4777);sai.sin_addr.s_addr=inet_addr(127.0.0.1);客户端跟服务器端代码基本是一样的:int ret=select(0,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;

5、 printf(rebuff);运行结果:UDP 发送端 :不需要建立连接,发送端步骤:创建套接字后,地址初始化,发送信息,然后关闭套接字。基本变量设置fd_set rfd;struct timeval timeout;timeout.tv_sec=30;timeout.tv_usec=0;FD_ZERO(int ret;ioctlsocket(sock,FIONBIO,FD_SET(sock,循环中的语句:scanf(%s,buff);int count=sendto(sock,buff,strlen(buff)+1,0,(struct sockaddr *)ret=select(0, if

6、 (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 *)if(count0) break;if(count=0) break;printf(buff);printf(n);接收端:创建套接字,地址初始化,绑定套接字跟端口,接受信息,打印出数据,关闭套接字。sai.s

7、in_addr.s_addr=htonl(INADDR_ANY);bind(sock,(struct sockaddr *)while (1)char buffer100;int len=sizeof(sai);int count=recvfrom(sock,buffer,20,0,(struct sockaddr *)printf(buffer);fd_set rfd;/fd_set wfd;struct timeval timeout;timeout.tv_sec=30;timeout.tv_usec=0;FD_ZERO(u_long ul=1;int ret;循环:ret=select(

8、0, 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 *)if(count0) break;if(count=0) break;printf(buffer);printf(n);sendto(sock,buffer,strlen(buffer)+1,0,(struct sockaddr *)运行结果:5、出现的问题UDP:调试完程序后出现了接收端接收不到发送端发的数据。6、出现问题的解决方法我检查了发送端的程序,然后看了接收端的程序,发现我的发送端循环代码中发送语句有错误,修改后接收端可以收到。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号