ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:124.44KB ,
资源ID:13073437      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13073437.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络实验报告(UDP服务器及简单聊天系统)Word下载.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络实验报告(UDP服务器及简单聊天系统)Word下载.docx

1、由于 UDP 采取了无连接的方式,因此协议简单,在一些特定的应用中协议运行效率高。UDP 适合一些实时的应用,如 IP 电话、视频会议,它们要求源主机以恒定的速率发送数据,并且在网络出现拥塞时,可以丢失一些数据,但是延迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传输层采用的就是 UDP 协议。本次课设以 Eclipse 作为开发平台,java 为开发语言模拟实现了多客户端连接访问 UDP 服务器的过程。关键词 UDP;服务器;客户端;java1、引言1、课程设计目的:UDP 是 TCP/IP 协议族为传输层设计的两个协议之一,是一种无连接的,不可靠的协议。由于 UDP 采用了无连接的

2、方式,因此协议简单,在一些特定的应用中协议运行效率高。UDP 适合一些实用的应用,如 IP 电话、视频会议,它们要求源主机以恒定的速率发送数据,并且在网络拥塞时,可以丢失一些数据,但是延迟不能太大。基于这些特点,流式多媒体通信、多播等应用在传输采用的就是 UDP 协议。2、课程设计要求:编写程序,设计 UDP 服务器。因为考虑到实时性,所以选择 UDP 为主要的网络通信技术。(1) 程序能流畅地完成视频文件的传输(实际由于时间的问题和网络编程的知识掌握较少没有实现这个功能)。(2) 要能对多个客户端进行管理。需要通过 UDP 模拟多个客户端连接验证的情况。3、设计平台Windows 8.1 操

3、作系统,Eclipse2、设计原理UDP 服务器的设计主要应用了四个方面的技术。1) UDP 协议技术。UDP 是一个无连接协议,传输数据之前源端和终端不建立连接,当它想 传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端, UDP 传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP 把每个消息段放在队列中, 应用程序每次从队列中读一个消息段。2) JAVA 编程技术。Java 对网络编程提供了很好的封装, 包中的类和接口提供了可用于低层和高层网络编程的 API。低层 API 可以让你直接访问 Socket,为网络设计提供了不

4、少方便,java 还提供了高度封装和高性能的 io 流 API 便于发送和读取消息.3) TCP/IP 协议技术。在 T C P / I P 协议族中,有两个互不相同的传输协议: T C P(传输控制协 议)和 U D P(用户数据报协议)。T C P 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层, 确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高 可靠性的端到端的通信, 因此应用层可以忽略所有这些细节。 而另一方面,U D P 则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发 送到另一台主机

5、,但并不保证该数据报能到达另一端。任何必需的可靠性必须由 应用层来提供。4) 、JAVA Socket 编程。所谓 socket 通常也称作套接字,用于描述 IP 地址和端口,是一个通信链的句柄。应用程序通常通过向网络发出请求或者应答网络请求.在 JAVA 中Socket 和 ServerSocket 类库位于 包中。ServerSocket 用于服务器端,Socket 是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个 Socket 实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。3、程序代码设计流程

6、1、主程序流程图Scoket()绑定客户端发送信息等待客户请求接收信息绑定服务器端服务请求处理服务请求服务应答关闭服务器客户端2、.设计中的重点及难点:1)如何把发送和接收两部分结合在一起。3、 UDP 服务器的具体设计过程:设计 UDP 服务器的过程如下所示。首先,创建一个 SOCKET 并监听事件。然后,启动线程接收数据。这样,客户就有机会处理这一事件并作一些动作。最后,当客户断开时, 向服务器发送一个事件,服务器就可以做出回应。其中最关键的部分就是收发部分和数据处理部分。1) 客户端发送信息socket = new Socket(127.0.0.1, 8890);/定义套接字writer

7、 = new PrintWriter(socket.getOutputStream();writer.println(客户端说: + 你好,服务器!); writer.flush();/发送信息并清空缓存2) 客户端接收信息reader = new BufferedReader(new InputStreamReader( socket.getInputStream();System.out.println(服务器说: + reader.readLine();3) 服务器端发送信息writer = new PrintWriter(socket.getOutputStream(); writer

8、.println(欢迎光临!writer.flush();4) 服务器端接收信息Socket socket = sk.accept(); System.out.println(客户端信息: +Thread.currentThread()+ socket.getRemoteSocketAddress() + 连接上! reader = new BufferedReader(new InputStreamReader(socket.getInputStream(); System.out.println(reader.readLine();/打印读取的第一行5) 整个程序的运行过程服务器并不是主动

9、地建立连接,他们是被动地监听一个客户端的连接请示,然后给予他们服务。服务器是由类 ServerSocket 来建立的。下面的程序建立了一个服务器端 socket 并把它绑定到 8890 端口:ServerSocket serverSocket = new ServerSocket(8890,50);第一个参数是服务端要监听的端口,第二个参数是可选的。API 文档中说明了这是一个监听时间,但是在传统的 socket 程序中第二个参数是监听深度。一个服务器可以同时监听多个连接请求,但每次只能处理一个。监听堆是一个无回答的连接请求队列,上面的请求建立一个连接来处理最后五个请求。如果省略了后面的一个参

10、数,则默认值是 50。一旦 socket 建立了并开始监听连接,进来的连接将会建立并放在监听堆。accetp()方法把在堆中的连接取出来.Socket clientSocket = serverSocket.accept();这个方法返回一个用来与来访者对话的客户端连接.服务器本身不可能建立对话, 相反地,服务器 socket 会使用 accept()方法来产生一个新的 socket.服务器socket 依旧打开并排列新的连接请求.与客户端 socket 一样,下面的一步建立输入和输出流:BufferedReaderreader=newBufferedReader(new InputStrea

11、mReader(socket.getInputStream();PrintWriterwriter=newPrintWriter(socket.getOutputStream();一般的 I/O 操作可以在新建的流中运用.在服务器回应前它等待客户端发 送一个空 白的行.当会话结束时,服务器关闭流和客户端 socket.如果在队列中没有 请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当 5 个连接处理完闭之后服务器退出.任何的在队列中的呼叫将会被取消.4、核心代码:public void run() BufferedR

12、eader reader = null; PrintWriter writer = null;try sk = new ServerSocket(8890);我在 8890 端口监听! while (true) + Thread.currentThread()/从读缓冲区中读入套接字的输入字符流System.out.println(reader.readLine(); /输出读入字符流的内容TimeUnit.MILLISECONDS.sleep(3000); catch (Exception e) e.printStackTrace();if (reader.readLine()=null) 客户端: + socket.getRemoteSocketAddress()+ 断开连接! System.out.println(); catch (IOException e) e.printStackTrace(); finally if (writer != null)writer.close(); if (writer !reader.close(); cat

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1