udp聊天系统(基于nio实现)

udp聊天系统(基于nio实现)

ID:13585739

大小:377.00 KB

页数:44页

时间:2018-07-23

udp聊天系统(基于nio实现)_第1页
udp聊天系统(基于nio实现)_第2页
udp聊天系统(基于nio实现)_第3页
udp聊天系统(基于nio实现)_第4页
udp聊天系统(基于nio实现)_第5页
资源描述:

《udp聊天系统(基于nio实现)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机网络实验报告专业班级软件工程4班(2013年12月)目录1协议介绍和使用说明1.1协议内容1.2关键技术1.2.1服务器端Socket的实现1.2.2通信的建立2程序设计2.1系统结构2.2主程序设计2.2.1服务器端程序2.2.2客户端程序2.3各模块设计2.3.1客户端向服务器发送消息2.3.2客户端之间发送消息2.4.2界面的功能2.4界面设计2.4.1界面设计的方法  2.4.2界面的功能2.5实现代码2.6程序调试及运行结果2.6.1调试前的准备2.6.2程序调试过程2.6.3程序运行结果2.6.4出错分析3.课设体

2、会参考文献1协议介绍和使用说明1.1协议内容本课程设计主要是基于UDP的并用Java实现的简单的聊天程序。UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。UDP在传送数据之前不需要先建立连接。对方的运输层在收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠交付,但在某些情况下UDP是一种最有效的工作方式。虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点,它有即时通信的功能。比如说,使用聊天程序聊天的时候,省去的了跟对方通信的时候的链接的麻烦,直接进行通信。UDP只在IP的数据报服务之上增加

3、了很少一点的功能,即端口的功能和差错检测的功能。UDP使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。UDP是面向报文的。UDP没有拥塞控制,很适合多媒体通信的要求。UDP支持一对一、一对多、多对一和多对多的交互通信。发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。接收方UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完

4、整的报文。图1.1UDP基本工作过程1.2关键技术1.2.1服务器端Socket的实现Socket又称作套接字,它是使用标准Unix文件描述符(filedescriptor)和其它程序通讯的方式。使用send()和recv()让你更好的控制数据传输。在Java网络编程中,socket相当于应用程序的港口码头;在计算机网络中,套接字由ip地址和端口号组成,为进程之间通信提供地址。两个主机进行通信实际上就是两个主机中的应用进程互相通信,应用进程之间的通信又称为端到端的通信。为应用进程之间的通信提供运输服务的是运输层的运输协议,运输层需要

5、有两种不同的运输协议,即面向连接的TCP和无连接的UDP。在Java中,基于NIO非阻塞编程实现UDP的聊天程序,使用三个重要的类(DatagramSocketChannel类和Selector类和ExecutorService类)。DatagramSocket类表示用来发送和接收数据报包的套接字,在NIO中被DatagramChannel封装,可由DatagramChannel得到。数据报套接字是包投递服务的发送或接收点。每个在数据报套接字通道上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路

6、由,也可能按不同的顺序到达。在DatagramChannel上总是启用UDP广播发送。为了接收广播包,应该将DatagramChannel对应的DatagramSocket绑定到通配符地址。在某些实现中,将DatagramSocket绑定到一个更加具体的地址时广播包也可以被接收。ByteBuffer代表用于通道传输的数据的缓冲区,数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。服务程序工作在服

7、务器的某个端口上,一旦启动服务,它将在这个端口上监听,等待客户程序发来数据,当有客户数据到达连接到该端口,receive()方法就接受该数据并返回相应的SocketAddress地址,可以用该对象获得一个输入输出流。而端到端的发送数据则是采用send(ByteBuffer,SocketAddress)发送到指定地址。服务器的套接字通道用服务器套接字通道类(DatagramChanel)来建立。具体实现如下:(1)建立一个服务者,端口为8080。(2)服务者永远等待,一旦客户送来正确的请求数据,receive()方法就接受发过来的数据

8、。(3)创建数据缓冲区received和send。用于发送在通道中发送数据以上实例send和receive是服务者和客户接受输入信息和发送信息所用。(4)DatagramChannel.close()用于关闭通道。图1.2基于UDP的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。