Java网络程序设计章-课件1.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Java网络程序设计章-课件1.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 网络程序设计 课件
- 资源描述:
-
1、第6章 UDP Socket 第6章 UDP Socket 6.1 UDP 6.2 UDP Socket 6.3 IP广播 6.4 IP组播 第6章 UDP Socket 6.1 UDP6.1 UDP6.1.1 UDP6.1.1 UDP的概念的概念UDP是TCP/IP参考模型中传输层的无连接协议,提供面向事务的、简单的、不可靠的数据传送服务。UDP协议的最早规范于1980年发布,编号为RFC768。UDP与TCP均属于TCP/IP体系结构中传输层的协议,通过应用层与传输层之间的端口为上层的应用程序提供并发传输服务。第6章 UDP Socket 虽然UDP是一种不可靠的网络协议,但是在很多情况下
2、UDP协议会非常有用。因为UDP具有TCP所望尘莫及的数据传输速度优势。在TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,使TCP传输速度受到了严重的影响。反观UDP,由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使数据传输速度得到了保证。UDP与TCP之间的主要区别如表6-1所示。第6章 UDP Socket 第6章 UDP Socket 正因为UDP的特点,在为网络通信软件选择使用协议的时候,选择UDP必须要谨慎。在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重,很多仅在局域网环境下使用的通信软件采用
3、UDP协议。又由于UDP不属于连接型协议,具有资源消耗小、处理速度快的优点,因而通常音频、视频和消息数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如各种类型的聊天室软件,如ICQ、QQ和视频电话会议系统均使用的UDP协议。相对于数据传输的可靠性而言,某些应用更加注重实际性能,为了获得更好的使用效果(例如,更高的画面帧刷新速率),往往可以牺牲一定的可靠性(例如,画面质量)。采用UDP应用层的协议如表6-2所示。第6章 UDP Socket 第6章 UDP Socket 6.1.2 6.1.2 信息传播的形式信息传播的形式信息在网络中传播的形式有三种
4、,分别是:单播(UniCast)、广播(BroadCast)和组播(MultiCast,或称为多播),如图6-1所示。采用TCP作为传输协议,信息传递只能实现点到点的单播形式,如果必须使用TCP作为传输协议而实现向多个用户发送相同的消息,就必须采用轮流循环的方式进行点到点的单播,从而降低了信息的实时性也浪费了带宽。利用UDP作为传输协议,则可以实现所有形式的传播。第6章 UDP Socket 图6-1 单播、广播、组播示意图 第6章 UDP Socket 单播指客户端与服务器之间的点到点连接,即当客户端发出请求时,服务器发送独立单播流。单播的优点:服务器及时响应客户机的请求;服务器针对每个客户
5、不同的请求发送不同的数据,容易实现个性化服务。单播的缺点:服务器针对每个客户机都需要发送数据流,服务器流量=客户机数量客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。现有的网络带宽是金字塔结构,即城际省际主干带宽仅仅相当于其所有用户带宽之和的5。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞,只要5的客户在全速使用网络,其他人就无法使用了,而将主干扩展20倍几乎是不可能的。第6章 UDP Socket 广播指主机之间“一对所有”的通信模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管是否需要
6、),由于其不用路径选择,所以其网络成本可以很低廉。广播的优点:网络设备简单,维护简单,布网成本低廉;由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。广播的缺点:无法针对每个客户的要求和时间及时提供个性化服务;网络允许服务器提供数据的带宽有限,客户端的最大带宽服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说广播无法向众多客户提供更多样化、更加个性化的服务;广播禁止在Internet宽带网上传输,因为会产生广播风暴,造成网络阻塞。第6章 UD
7、P Socket 组播指主机之间“一对一组”的通信模式,也就是加入了同一个组的主机可以接收到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。组播的优点:需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载,具备广播所具备的优点;由于组播协议是根据接收者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富;此协议和单播协议一样允许在Internet宽带网上传输。组播的缺点:与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QoS加以弥补。现行
8、网络虽然都支持组播的传输,但在客户认证、QoS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。第6章 UDP Socket 6.2 UDP Socket6.2 UDP Socket6.2.1 DatagramSocket6.2.1 DatagramSocket类和类和DatagramPacketDatagramPacket类类在J2SDK以前的版本里,TCP和UDP套接字都使用Socket类。在J2SDK中专门提供了UDP的套接字类,在类库中有DatagramSocket类和DatagramPacket类来实现对UDP数据报的传输。DatagramSo
9、cket类用于实现UDP通信的套接字,实现端到端的通信,完成数据报的接收和发送。其特点是数据发送端和接收端不需要事先建立通信连接,甚至可以是在接收端未准备好或者不存在的情况下,发送端也可以进行消息发送,类定义如图6-2所示。第6章 UDP Socket 图6-2 DatagramSocket类定义 第6章 UDP Socket 其构造方法有:public DatagramSocket(),在本地系统任一空闲的UDP端口建立UDP Socket对象;public DatagramSocket(int port),在指定端口建立UDP Socket对象;public DatagramSocket(
10、int port,InetAddress address),在指定InetAddress对象和端口建立UDP Socket对象。其主要方法有:public void send(DatagramPacket sp)throws IOException,发送一个数据报;public synchronized void receive(DatagramPacket rp)throws IOException,接收一个数据报;public void close(),关闭当前UDP套接字。第6章 UDP Socket 第6章 UDP Socket 代码说明如下:第5行声明一个DatagramSocket
11、对象;第615行循环测试指定的UDP端口范围;第8行在指定的UDP端口建立一个UDP套接字,如果成功则说明该端口空闲,否则说明该端口已被占用。运行结果如图6-3所示。DatagramPacket类是构造一个用于接收或者发送的数据报,采用字节数组的形式存储数据,类定义如图6-4所示。第6章 UDP Socket 图6-3 扫描本地UDP端口 第6章 UDP Socket 图6-4 DatagramPacket类定义 第6章 UDP Socket 其提供的构造方法:public DatagramPacket(byte buf,int length):该构造方法中包括了用于存储数据的字节数组和可存储
12、的字节数,主要用于接收数据报;public DatagramPacket(byte buf,int length,InetAddress address,int port):该构造方法中包括存储数据的字节数组、可存储的字节数、接收端的地址,以及接收端的端口号,通常被用于发送数据报。第6章 UDP Socket 其主要方法:public synchronized getDate():从数据报中获得数据;public synchronized getLength():从数据报中获得数据长度;public synchronized setDate(byte buf):设置数据报的数据;public
13、synchronized setLength(int length):设置数据报的长度。使用UDP实现通信,需要分别建立通信的发送端和接收端程序。第6章 UDP Socket 第6章 UDP Socket 第6章 UDP Socket 第6章 UDP Socket 代码说明如下:第4行创建UDP套接字对象;第5行创建UDP数据报对象;第6行创建数据接收方的InetAddress对象;第7行定义数据接收方的端口号;第8行定义发送和接收缓存字节数组,容量为256 B;第916行启动本地的UDP 1080端口;第19行创建接收数据报对象,绑定接收字节数组长度为256;第20行执行receive()方
14、法接收数据;第6章 UDP Socket 第21行通过getData()方法从收到的数据报中提取数据;第2325行提取收到的数据报中的对方IP和端口信息;第2627行首先通过getBytes()方法将字符串转换为字节数组,然后再构造发送数据报,在参数中指明接收方的IP和PORT,这个地址信息从第2324行获得;第28行使用send()将数据报发送出去。运行结果如图6-5所示。第6章 UDP Socket 图6-5 接收端运行结果 第6章 UDP Socket 在接收端首先建立接收缓存,使用定义字节数组,该数组的尺寸通常为8的整数倍,例如256,512,1024,2048等;将该字节数组带入Da
15、tagramPacket构造接收数据报;通过DatagramSocket.receive()接收数据报;利用DatagramPacket.getData()方法从数据报中提取出字节数组,并且将字节数组作为String的参数构造可读的字符串。从运行结果中,可以得到发送端的IP地址是127.0.0.1,使用的UDP端口是1065,接收的信息是“从发送端发送信息”。第6章 UDP Socket 第6章 UDP Socket 第6章 UDP Socket 第6章 UDP Socket 代码注释如下:第11行本地开启UDP 1065端口;第1923行构造发送数据报,并通过send()发送该数据报;第25
16、26行构造接收数据报,并通过receive()接收数据报。运行结果如图6-6所示。第6章 UDP Socket 图6-6 发送端运行结果 第6章 UDP Socket 在发送端首先构造发送缓存,采用字节数组,该数组尺寸同接收缓存;如果要发送字符串信息,需要使用String.getBytes()将待发送的字符串转化为字节数组;将字节数组作为DatagramPacket对象的参数构造发送数据报;通过DatagramSocket.send()方法将数据报发送出去。从运行结果中,可以得到接收端的IP地址是127.0.0.1,使用的UDP端口是1080,发送端得到的信息是“从接收端返回确认”。当一个客户
17、端同时接收和发送信息时,要注意发送和接收缓冲一定要区分开,并且在每次接收或者发送之前,要清除原有内容,否则会残留不必要的信息。第6章 UDP Socket 6.2.2 TCP Socket6.2.2 TCP Socket与与UDP SocketUDP Socket的区别的区别TCP和UDP两种传输协议都在网络世界中发挥重要的作用。应用层进程根据不同网络通信的环境和特点,实际网络通信软件设计需要在UDP和TCP两种协议之间权衡。在Java中进行编程时,有以下区别:1 1消息传递的形式消息传递的形式TCP是面向连接的服务,只能实现点到点的传递。UDP可以实现单播、广播和多播。在实现广播时,数据报目
18、的地址为指定网络中最大的IP地址,例如202.117.128.255,具体由网络规划情况而定。在实现多播时,数据报目的地址为D类地址。第6章 UDP Socket 2 2所使用的所使用的SocketSocket在TCP传输模式下,使用ServerSocket用于监听指定端口,保证实现TCP的三次握手;使用Socket建立通信的通道。在UDP传输模式下,使用DatagramSocket直接实现传输消息的包。第6章 UDP Socket 3 3SocketSocket定义的位置不同定义的位置不同在TCP模式下,由于存在三次握手、传输、关闭等多个阶段,所以Socket定义应该为类的属性,便于在所有的
19、方式中进行操作。在UDP模式下,是尽最大可能交付,并不需要事先建立连接,属于单传输阶段的形式,所以在发送数据通信的类中进行定义即可,表现为在响应发送按钮事件处理和接收数据的事件处理方法中的局部变量。第6章 UDP Socket 4 4是否存在监听及方式是否存在监听及方式在TCP模式下,存在三次握手机制,利用ServerSocket持续监听指定端口是否有连接请求到达。在UDP模式下,直接从指定端口发送或接收数据。5 5输入输入/输出流的定义输出流的定义在TCP模式下,由于属于管道类型的流操作,所以利用Socket.getInputStream()和Socket.getOutputStream()
展开阅读全文