下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络程序设计
实验报告实验名称:I/O模型网络程序实验实验类型:验证型实验指导教师:_XXX老师(理论课:XXX)专业班级:XXXXXXXXX姓名:_XXXXXX_学号:_XXXXXXXXX电子邮件:XXXXXXXXX@实验地点:XXXXXXXXX实验日期:XXXXXXXXXXXXXXXXXX实验成绩:、实验目的掌握WinsockI/O模型工作原理;熟悉I/O模型中使用的Winsock接口函数;掌握使用I/O模型进行网络程序设计的编程步骤;二、实验设计2.1实验要求在上述I/O模型中自选一个I/O模型,构建一个TCP服务器,该服务器能:接受客户端连接时显示客户端的IP,PORT信息接收客户端连接时显示其连接编号,客户端退出时显示关闭的连接编号能显示客户端发来的数据能从键盘输入数据并发到客户端其他数据传送功能(可选)编写客户端程序,使之能:从键盘输入数据并发送到服务器能接收服务器发来的数据当输入“bye”时退出程序2.2实验设计设计服务端程序,服务端程序首先需要创建套接字并监听,等待用户连接上后,获取客户端的IP、PORT信息,并为该连接编号,记录其编号,在客户端发来信息或退出程序时显示其连接编号,接受用户发来的信息并显示,获取用户在服务器端的输入并发送到客户端。设计客户端程序,客户端首先需要创建套接字并连接到服务器端,然后接受用户输入的数据并传输给服务器端,等待服务器端将发送的数据,在每次接受输入时需要判断其输入的字符串是否是“bye”,如果是则退出程序,否则继续连接。服务器端程序流程图如下:图1•选择模型服务器端程序流程图
三、实验过程(包含实验结果)针对实验要求设计代码编写代码实现要求实验结果IeatnamenameThankyou!Ijustte11thetruth.Ihauesnnlzlzhlng'elseizndo,Saj-SeeyouLater-Hi,MynameisFate.据,来自编号3:isS¥L.U27-0-0-l:52060;(:52061)(127.0.S.1:520G2)Hello?IFImngr^todeath,Iwanttonopecarefulabouryourhealth.攵到数据,来自编号1:IeatnamenameThankyou!Ijustte11thetruth.Ihauesnnlzlzhlng'elseizndo,Saj-SeeyouLater-Hi,MynameisFate.据,来自编号3:isS¥L.U27-0-0-l:52060;(:52061)(127.0.S.1:520G2)Hello?IFImngr^todeath,Iwanttonopecarefulabouryourhealth.攵到数据,来自编号1:byeItJsreallyapity.接收到数据,来自编号3:byebye-Seruer,WhatJsyolifpealname?imusl:somefood..Fn*st:_'E:炯塔編程实^\^E9\5elect\Debug\Select.exe"回S3号2号自自编号1:图二•服务器端程序运行效果,■^'E;\网串躺桂实捡■戎验三\FTPClienl:\Del3Lig\FTFC:lient.&KE"■-十L厂|冋连接到服务品成攻*Hello*按殳到数据:Hi.I1nthungrriFtodEcit:h^Iijanttoedt^Di>iefood-接受至〔I频扌,居:Bemorecarefulaboupj/ourhealthbye退二程戶Pfes右anykeytocontinue.图三•第一个连接服务器端的客户端运行效果图四•第二个连接服务器端的客户端运行效果叵]乍:闻堀痛程史埶宴验三\FTPC:hE\PebLi或FTPCliEng*・[n|目连接到服务器成功。Server3Jhatfsyourrealname?接荒钊数据:NilnaneisSVL.Ihavesomtthingelsetoda^SoImustleavefirst.捋受到数据2ItJsreallyapity,liye退出程序Pi'essanylicytacontinue图五•第三个连接服务器端的客户端运行效果四、讨论与分析你所选用的I/O模型是如何判断套接字上何时可以收发数据的或者数据收发已完成的?答:我选择的是选择模型,在使用选择模式时,会用到三个套接字集合,readfds用于检查套接字集合中套接字是否可读,writefds用于检查其可写性,最后一个excpetfds用于检查错误。当有数据可读,连接已经关闭、重启或是中断,有未决的连接请求时,readfds受信。当数据能够发送和连接成功调用connect时,writefds受信。当连接失败和OOB数据可读时,excpetfds受信。只需调用select函数将套接字集合遍历,当套接字上有数据可接受时,可得到该受信的套接字并执行相应的操作。当已经完成时,也会将该套接字从集合中删去。简述你所使用的I/O模型的编程步骤答:使用选择模型的编程步骤大致为:(1)初始化套接字结合fdSocket,向这个集合添加监听套接字句柄;(2)将fdSocket集合的拷贝fdRead传递给select函数,当有事件发生时,select函数移除fdRead中没有未决I/O操作的套接字句柄,然后返回;(3)比较原来fdSocket集合与select处理过的fdRead集合,确定哪些套接字有未决的I/O,并进一步处理这些I/O';(4)回到第二步继续处理。在你所使用的I/O中如何判断发生网络事件或者IO完成的套接字?答:选择模型是通过select函数去处理套接字集合,并将其中没有未决I/O的套接字,即IO完成的套接字移除,然后遍历处理后的套接字集合,此时套接字集合中只剩下有网络事件的套接字。五、实验者自评通过本次实验,对WinsockI/O模型工作原理有了进一步了解和熟悉,并熟悉了I/O模型中使用的Winsock接口函数,掌握了使用I/O模型进行网络程序设计的编程步骤。尤其是对选择模型有了深入的了解,掌握了其判断套接字上何时可以收发数据的或者数据收发已完成的原理,判断发生网络事件或者IO完成的套接字的原理,对其他模型的理解也更加深入。实验过程中,遇到困难积极向同学寻求帮助,并查阅资料,很好地将问题解决了,自己的编程和调试代码的能力也得到了提高。六、附录:关键代码(给出适当注释,可读性高)当有新的连接请求时,服务器响应连接并建立接受套接字,获取客户端的IP、PORT信息和新创建的套接字在socket集合中的位置,以此作为其连接编号,并显示。if(fdSocket.fd_count<FD_SETSIZE){sockaddr_inaddrRemote;intnAddrLen=sizeof(addrRemote);SOCKETsNew=::accept(sListen,(SOCKADDR*)&addrRemote,&nAddrLen);FD_SET(sNew,&fdSocket);for(intk=0;k<FD_SETSIZE;k++){if(fdSocket.fd_array[k]==sNew){sCount=k;break;}}printf("接收到连接,编号%d(%s:%d)\n",sCount,::inet_ntoa(addrRemote.sin_addr),::ntohs(addrRemote.sin_port));}若有可接受的数据或连接关闭事件时,判断事件并做出响应,关闭连接时显示关闭的套接字编号。else{charszText[256];intnRecv=::recv(fdSocket.fd_array[i],szText,sizeof(szText),0);if(nRecv>0)//(2)可读{szText[nRecv]='\0';printf("接收到数据,来自编号%d:%s\n",i,szText);gets(b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上线下融合的便利店模式探索-洞察分析
- 勇往直前的我们第7季的观后感范文(5篇)
- 云环境下的数据共享模式-洞察分析
- 头孢替唑与其他抗生素联合用药的成本效益分析-洞察分析
- 物流隐私保护技术融合-洞察分析
- 微电网与配电箱融合-洞察分析
- 头颈部肿瘤个体化治疗-洞察分析
- 创新驱动的生物医药产业发展策略
- 农村金融创新与农业现代化协同发展
- 医学农业科技的创新进展及其影响
- 吉林省延边州2023-2024学年高一上学期期末学业质量检测数学试题(解析版)
- 常用光电传感器介绍课件
- 在线客服质检述职报告
- JC/T2041-2020 聚氨酯灌浆材料
- 常州市2022-2023学年八年级上学期期末历史试卷(含答案解析)
- 粮油产品授权书
- 第3课 中古时期的欧洲(共51张PPT)
- 电玩城岗位流程培训方案
- 济南律师行业分析
- 山东大学答辩专属PPT模板
- 烟台汽车西站工程施工组织设计
评论
0/150
提交评论