欢迎来到天天文库
浏览记录
ID:24162090
大小:89.00 KB
页数:4页
时间:2018-11-12
《实验五io模型实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、网络程序设计实验报告实验名称:I/O模型实验指导教师:专业班级:姓名:学号:实验地点:实验日期:实验成绩:一、实验0的•掌握WinsockI/O模型工作原理;•熟悉I/O模型屮使用的Winsock接口函数;•掌握使用I/O模型进行网络程序设计的编程步骤:二、实验设计(一)实验要求如下:1、在上述I/O模型中自选一个I/O模型,构建一个TCP服务器,该服务器能:>接受客户端连接吋显示客户端的IP,PORT信息>接收客户端连接时显示其连接编号,客户端退出时显示关闭的连接编号>能显示客户端发來的数据>能从键盘输入数
2、据并发到客户端>其他数据传送功能(可选)2、编写客户端程序,使之能:>从键盘输入数据并发送到服务器>能接收服务器发來的数据>当输入“bye”时退出程序(二)、设计:1.、设计服务端程序,服务端程序首先需要创建套接字并监听,等待用户连接上后,获取客户端的IP、PORT信息,并为该连接编号,记录其编号,在客户端发来信息或退出程序时、S示其连接编号,接受用户发來的信息并显示,获取用户在服务器端的输入并发送到客户端。2.设计客户端程序,客户端首先需要创建套接字并连接到服务器端,然后接受用户输入的数据并传输给服务器端,
3、等待服务器端将发送的数据,在每次接受输入吋需要判断其输入的字符串是否是“bye”,如果是则退出程序,否则继续连接。3.服务器端程序流程图如三、实验过程1.针对实验要求设计代码2.编写代码实现要求3.实验结果【阁片待补充】服务器端程序运行效果第一个连接服务器端的客户端运行效果第二个连接服务器端的客户端运行效果第三个连接服务器端的客户端运行效果四、讨论与分析1.你所选用的I/O模型是如何判断套接字上何时可以收发数据的或者数据收发己完成的?答:我选择的是选择模型,在使用选择模式时,会用到三个套接字集合,readfd
4、s用于检查套接字集合屮套接字是否可读,writefds川于检查其可写性,最后一个excpetfds用于检查错误。当有数据可读,连接已经关闭、重启或是中断,有未决的连接清求时,readfds受信。当数据能够发送和连接成功调用connect时,writefds受信。当连接失败和OOB数据可读时,excpetfds受信。只需调用select函数将套接字集合遍历,当套接字上有数据可接受时,可得到该受信的套接字并执行相应的操作。当已经完成时,也会将该套接字从集合中删去。2.简述你所使用的I/O模型的编程步骤答:使用选择
5、模型的编程步骤大致为:(1)初始化套接字结合fdSocket,向这个集合添加监听套接字句柄;(2)将fdSocket集合的拷贝fdRead传逆给select函数,当有事件发生时,select函数移除fdRead中没有未决I/O操作的套接字句柄,然后返回;(3)比较原来fdSocket集合与select处理过的fdRead集合,确定哪些套接字有未决的I/O,并进一步处理这些1/0*;(4)回到第二步继续处理。3.在你所使用的I/O中如何判断发生网络事件或者IO完成的套接字?答:选择模型是通过select函数去处
6、理套接字集合,并将其中没有未决I/O的套接字,即10完成的套接字移除,然后遍历处理后的套接字集合,此时套接字集合屮只剩下有网络事件的套接字。五、实验者自评通过本次实验,对WinsockI/O模型工作原理有了进一步了解和熟悉,并熟悉了I/O模型屮使用的Winsock接口函数,掌握了使用I/O模型进行网络程序设计的编程步骤。尤其足对选择模型有了深入的了解,掌握了其判断套接字上何时可以收发数据的或者数据收发已完成的原理,判断发生网络事件或者10完成的套接字的原理,对其他模型的理解也更加深入。实验过程中,遇到W难积极
7、向同学寻求帮助,并查阅资料,很好地将问题解决了,自己的编程和调试代码的能力也得到了提高三、附录:关键代码(给出适当注释,可读性高)当有新的连接请求时,服务器响应连接并建立接受套接字,获取客户端的IP、PORT信息和新创建的套接字在socket集合中的位置,以此作为其连接编号,并显示。【代码待补充】
此文档下载收益归作者所有