新网络编程与计算技术 教学课件 刘化君 第6章 UDP数据报套接字编程.pptVIP

新网络编程与计算技术 教学课件 刘化君 第6章 UDP数据报套接字编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
6.1 UDP通信概述 用户数据报协议(UDP)是很多应用程序常用的传输协议。也就是说,UDP是在计算机上规定用户以数据报方式进行通信的协议,它提供了应用程序之间传送数据报的基本机制。 1.UDP协议的特点 1)UDP向应用系统提供了一种发送封装原始IP数据报的方法,并且在发送时无需建立连接。这不仅避免了建立连接和释放连接的麻烦,而且也减少了开销和发送数据之前的时延。 2)利用协议端口,UDP能够区分在同一台主机上运行的多个应用进程;使用校验和机制,UDP协议在把数据向应用进程提交之前,先对数据做一些差错检查。 3)UDP用户数据报只有8 B的头部开销,比TCP的20 B头部要短得多。 4)UDP不使用拥塞控制,不提供端到端的确认和重传功能,也不保证数据报一定能到达目的端,因此称为不可靠协议。所以主机也不需要维持具有许多参数、复杂的连接状态表。 5)通过UDP可以发送组播数据,所以使用组播服务的应用程序都建立在UDP之上。 6)不同的网络应用使用不同的协议。例如,HTTP使用TCP,而普通文件传输协议(Trivial File Transfer Protocol,TFTP)则使用UDP。UDP现在还常用于多媒体通信,如IP电话、实时视频会议、流式存储音频与视频等。 2.UDP数据报套接字通信 在服务器和客户机之间传递信息有两种方式,一是建立连接的通信方式,它首先需要先建立连接,然后再传递数据,所有的数据是以包(packet)的形式按照一定的顺序发送和接收的,最后关闭连接,这一通信过程是由管道(channel)来保证的。另一种是无连接的通信方式,这种方式不建立连接,而是在服务器和客户机之间利用UDP数据报来发送和接收相互独立的数据包。在这种无连接通信(UDP方式)中,所有的包都需要包含有该包完整的源和目标信息,以便指明该数据包的走向。 java.net包中的DatagramPacket类、DatagramSocket类和MulticastSocket类等为编写应用于网络之间UDP方式的数据通信实例提供了便利。在Java网络UDP数据报套接字编程中,在网络上发送和接收数据包需要使用J类库中提供的这些类。简单地讲,使用DatagramSocket类和DatagramPacket类来编写发送端和接收端程序就可以实现数据报的发送和接收。使用数据报通信模式在准备接收一个数据报时,接收端只需要提供一个缓冲区,以便存放接收到的数据,缓冲区的最大容量仅受限于允许的数据报包大小,一般小于64 KB。数据包抵达时,通过DatagramSocke类作为信息起源地的IP地址以及端口号会自动初始化。在发出一个数据包时,DatagramPacket类不仅需要包含正式的数据,也要包含IP地址以及端口号,以决定数据包到达的目的结点。 6.2 DatagramPacket类 DatagramPacket类是进行数据报通信的基础,用于处理报文,它将Byte数组、目标地址、目标端口等数据包装成报文或者将报文拆卸成Byte数组。DatagramPacket类的对象代表了一个UDP数据包。通过UDP发送数据时,先要根据发送的数据生成一个DatagramPacket对象,然后通过DatagramPacket对象的send()方法发送这个对象。接收时,先要根据接收数据的缓冲区生成一个public final class DatagramPacket extends ObjectDatagramPacket对象,然后通过DatagramPacket对象的receive()方法接收这个对象的数据内容。 6.2.1 构造函数 1.接收数据报的构造函数 public DatagramPacket(byte[] buffer, int length); public DatagramPacket(byte[] buffer, int offset, int length); 其中,buffer是接收数据报的缓冲区,length为数据报中数据的字节数(数据包长度),offset指明数据报的位移量。这两个构造函数功能是由接收缓冲区(byte[]字节数组与它的长度length)构造一个用于接收数据报的DatagramPacket类,从网络接收数据。若用于发送,则该UDPSocket应是一个“连接型”UDPSocket。 2.发送数据报的构造函数 public DatagramPacket(byte[] data, int length, InetAddress destination, int port); public DatagramPacket(byte[] data, int offset, int length, InetAddress destinatio

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档