word文档上海大学计算机网络实验二

内容

《网络与通信》课程实验报告实验2:Socket通信编程姓名学弟学妹的福利院系计算机学院学号15的任课教师张云华指导教师张云华实验地点计706实验时间周四3~4实验课表现出勤、表现得分(10)实验报告得分(40)实验总分操作结果得分(50)实验目的:1.掌握Socket编程过程;2.编写简单的网络应用程序。实验内容:利用你选择的任何一个编程语言,分别基于TCP和UDP编写一个简单的Client/Server网络应用程序。具体程序要求参见《实验指导书》。要求以附件形式给出:系统概述:运行环境、编译、使用方法、实现环境、程序文件列表等;主要数据结构;主要算法描述;用户使用手册;程序源代码;答:见同目录的”附件.docx”实验要求:(学生对预习要求的回答)(10分)得分:Socket编程客户端的主要步骤①创建Socket对象,指明需要连接的服务器的地址和端口号②连接建立后,通过输出流向服务器端发送请求信息③通过输入流获取服务器响应的信息④关闭响应资源Socket编程服务器端的主要步骤①创建ServerSocket对象,绑定监听端口②通过accept()方法监听客户端请求③连接建立后,通过输入流读取客户端发送的请求信息④通过输出流向客户端发送响应信息⑤关闭相应资源实验过程中遇到的问题如何解决的?(10分)得分:问题1:选择什么语言去实现?首先我完整学过比较熟悉的语言只有C/C++,而Java是零碎地学过一点,剩下的是自学的。但是我们也参考查阅了一些资料,发现Java中线程的类封装的比较好,而且编程起来比较方便,也能够满足TCP与UDP的需求,于是选择了Java来做这次实验。问题2:如何实现客户端的通信?就类比微信以及普通客户给10086发短信的情况,我们直接让服务器和客户端进行通讯,其实原理是一样的。实际上聊天软件如果基于TCP服务器所做的工作应当是转发而不是通信,比如一个客户端与另一个客户端之间的通信需要通过服务器转发,而客户端只是感觉像是直接与另一个客户端通信,这就是涉及到服务器的多线程和管理Socket连接方法的内容,在下个问题有更多解释。问题3:多线程的实现,即多个客户端同时访问服务器的问题显然这个问题要用多线程解决,一种方案是如果当前客户端建立的连接被服务器端监听到了,那么根据这个客户建立一个线程,则该线程要传送原客户端的Socket,稍微麻烦一点而且实现起来有点困难,还有一种方案是在服务器中监听,服务器监听到了的话给出客户端线程,然后设置专门控制客户端线程的容器,来对客户端进行操作,从而实现多个客户端访问的多线程的实现。本次实验的体会(结论)(10分)得分:通过这次实验,我了解和加深了关于使用Socket实现通信的知识和方法,这是计算机网络的第二次实验,我个人认为也是难度比较大的一次,不仅要写很多代码,还要弄清楚原理,写可视化界面等,我们也找了很多资料,最后决定用Java来实现,因为有相应的封装好的包可以调用,所以实现起来要更简单一些。还有一个地方是可视化的实现,因为上大计算机学院也没有系统的教这方面的内容,而且只有一个用Win32写的Windows编程课直到这个学期才开始学,而且是选修课,至于Java更是完全自己自学的,虽说其实也不是很难,但是没有受到任何指导的话不知道切入点在哪里所以就根本无从下手,因此设计出来的界面可能不是特别易用和美观,不过终究还是要靠自己的,要自己多加练习才能更加熟练!思考题:(10分)思考题1:(4分)得分:你所用的编程语言在Socket通信中用到的主要类及其主要作用。TCPClient类:客户端向服务器指定端口发起TCP请求的类TCPServer类:服务器用于监听端口并等待接受TCP请求的类还有最开始用户登陆的类,还自定义了几个用户以及对应的密码,做匹配若符合就成功登陆。思考题2:(6分)得分:说明TCP和UDP编程的主要差异和特点。答:①最主要区别是传输的可靠性:TCP(transmissionControlProtocol,传输控制协议)提供连线导向的可靠传输,而UDP(UserDataProtocol用户数据报协议)是非连线型的不可靠传输。②相对于TCP来讲,一大堆必须占据的封包表头都可以省略,从而换取更大的空间,因此UDP连线时所携带的资料要比TCP多很多,但是牺牲了可靠性。③具体使用TCP还是UDP要看具体场合,对于那些对时效性要求高而可靠性不高的传输,比如视频音频等,错几个bit并没有太大的影响,这就比较适合UDP。反之,在对可靠性要求高的情况下,就要使用TCP了。指导教师评语:日期:

浏览:26
下载量:-
下载币:30
日期:2021-04-30
3
收藏
         投诉 / 报错