网络编程实验报告_第1页
网络编程实验报告_第2页
网络编程实验报告_第3页
网络编程实验报告_第4页
网络编程实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

【实验目的】掌握基于多线程并发服务器的基本设计框架和实现方法。【实验性质】综合性实验【实验器材与所需软件】计算机、交换机、windows操作系统、java集成开发环境【实验学时】8学时【实验内容】实现一个多线程并发服务器(服务器功能自选),要求该服务器可以体现出同时为多个客户端服务的特性。【实验过程与步骤】实验设计并实现了一个基于多线程并发服务器的网络聊天室工具。1,需求分析:工具采用了Client/Server结构,将聊天室划分为两个子程序:客户端子程序、服务器端子程序。网络聊天室客户端程序服务器端客户端程序服务器端•客户端程序:实现客户端与服务器端进行连接,并可与服务器端进行实时通讯。•服务器端:实现建立与多个客户端程序之间的连接,管理连接并能够通过多线程技术同时与多个客户端进行实时通讯。2,系统设计:系统的设计中,客户端与服务器端的连接,通过TCP/IP网络建立,并依托Socket进行实时通讯。系统中,各个模块之间的关系如下图所示:

上图中,显示同一服务器,通过网络可以同时与多个客户端程序建立连接并实现实时通讯功能,通讯流程如下图所示:根据图示,客户端与服务器之间通过Socket()进行实时通讯,通讯步骤是:服务器监听、客户端发出请求、服务器接受、建立连接、交互通讯、关闭连接。另外,由于聊天室工具必须实现多客户端同时连接通讯的要求,因此,在服务器端设计时考虑采用多线程技术,每个服务器拥有多个服务线程,每个线程负责与一个客户端进行连接通讯,从而达到一个服务器同时与多个客户端并发通讯的效果。3,系统实现:在网络聊天室的最终实现时,设计服务器类、服务器线程类、客户端类以及系统界面类:•服务器类ClassServer:主要负责管理系统中的服务器线程,通过线程管理与客户端之间的连接及通讯,是服务器的主要管理端。•服务器线程类ClassServerThread:线程类中,实现了具体的服务器与客户端之间一一对应的连接关系,并通过Socket与客户端进行实时通讯。•客户端类ClassClient:

客户端类是通讯中的另一个主体,主要负责申请与服务器的连接,实现客户与服务器的交互。系统界面类ClassFace:系统界面类是系统的主类,封装了系统的主程序。Face类是直接与用户交互的,通过获取用户的需求,分别调用Server类或是Client类,是网络聊天室的直接主体。【实验结果或结论】网络聊天室主界面的运行效果如下图所示:冬我的卵天室168.1.16||£000客户端1服务器1▼1 □如上图所示,系统运行之后,自动获取主机的IP地址并显示在界面中的地址栏中,然后用户可以根据自己的需求设置端口号,点击服务器按钮之后,工具即成为聊天室服务器:叠我晦天室W*2回S3[瞟166.1.16pooo客户端|等特连戮在建立服务器之后,用户可在另一个界面中,输入服务器IP地址、端口号,并点击客户端按钮发起连接申请:也我的聊天室 =回:巩丁192.158.1.16 |2000 写户].服务器尝试连线 连线成功A连线成功之后,客户端和服务器端就可以开始实时通讯,通讯效果图如下图所示:

|192.163.11B12000客户端|.服务器|冬我的聊天室D回室客户端/I噩客户端/I噩.:168.1一比已痊线2468线wwwW连11F31FslFr—1F.T待・-:・・匕・・:・・归・・

需19我19我19玷19翡|哉是跚务器,容户端的信息都有IF地址理【实验中遇见的问题及其解决方案】在最初实现多客户端与服务器同时进行实时通讯时,发现所有客户端发出的信息服务器都能很好的在一时间收到,但是服务器发出的信息只有最近一个连接到服务器的客户端才能收到,经过研究分析发现通过TCP/IP网络建立的Socket连接,只能实现一一对应的通讯,也就是在新的客户端建立连接时,服务器与之前客户端建立的连接已经中断,因此发出的信息只有最近连接的客户端才能收到。因此,在原有设计的基础上,引入了多线程技术,在服务器端建立服务器线程池,每个线程都与客户端建立一一对应的连接,确保了服务器的信息第一时间发送到所有连接的客户端中。【实验总结与收获】通过本次试验,掌握了多线程并发服务器的设计思想,通过自己动手设计并实现的网络聊天室小工具,大大增强了自己的动手能力。同时,通过实验,进一步熟悉了JAVA开发环境。为了实现系统功能,深入研究了Socket基本原理及使用方法,积累了一定的JAVA语言网络编程经验。在系统的实现中,也遇到了种种问题,在对各种问题的排查之中,增加了自己对系统程序的测试能力。在发现问题、解决问题的过程中,大大增强了自己对使用的编程语言、网络技术相关知识理解与认识,为今后从事相关工作垫下了坚实的基础。【实验作业】简述线程池的基本原理。线程池的引入,主要是减少系统频繁的执行创建线程、销毁线程的操作,从而提高系统资源利用率,大大提高系统运行效率。一个线程池包括以下四个基本组成部分:线程池管理器(ThreadPool):用于创建并管理线程池,包括创建线程池,销毁线程池,添加新任务;工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等;任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。

温馨提示

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

评论

0/150

提交评论