1 / 28
文档名称:

UDP的网络编程.pdf

格式:pdf   页数:28页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

UDP的网络编程.pdf

上传人:yzhluyin9 2016/7/24 文件大小:0 KB

下载得到文件列表

UDP的网络编程.pdf

相关文档

文档介绍

文档介绍:核心提示:UDP 协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket ,但这两个 Socket 之间并没有虚拟链路,这两个 Socket 只是发送、接收数据报的对象,Java 提供了 DatagramSocket 对象作为基于UDP 协议的 Socket ,使用 DatagramPacket 代表 DatagramSocket UDP 协议是一种不可靠的网络协议,它在通信实例的两端各建立一个 Socket,但这两个 Socket 之间并没有虚拟链路,这两个Socket 只是发送、接收数据报的对象,Java 提供了DatagramSocket 对象作为基于UDP 协议的Socket,使用 DatagramPacket 代表DatagramSocket 发送、接收的数据报。 UDP 协议基础 UDP 协议是英文User Datagram Protocol 的缩写,即用户数据报协议, 主要用来支持那些需要在计算机之间传输数据的网络连接。 UDP 协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP 仍然不失为一项非常实用和可行的网络传输层协议。尤其是在需要很强的实时交互性的场合,如网络游戏、视频会议等,UDP 协议更是显示出极强的威力。 UDP 协议是一种面向非连接的协议, 面向非连接指的是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。至于对方是否可以接收到这些数据内容,UDP 协议无法控制,因此说UDP 协议是一种不可靠的协议。 与前面介绍的TCP 协议一样,UDP协议直接位于IP 协议之上。实际上, IP 协议属于OSI 参考模型的网络层协议,而UDP 和TCP 都属于传输层协议。 UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。因为 UDP 协议是面向非连接的协议,没有建立连接的过程,因此它的通信效率高;但也正因为如此,它的可靠性不如TCP 协议高。 UDP 协议的主要作用是完成网络数据流量和数据报之间的转换: 在信息的发送端,UDP协议将网络数据流量封装数据报,然后将数据报发送出去; 在信息的接收端,UDP协议将数据报转换成实际数据内容。 实际上,我们可以认为基于UDP 协议的Socket 类似于一个码头,该码头的作用就是负责发送、接收集装箱,一个数据报类似于一个集装箱。因此对于基于UDP 协议的通信双方而言,没有所谓的客户端和服务器端的概念。 Java 中的DatagramSocket 的作用类似于码头, 而DatagramPacket 的作用类似于集装箱。 UDP 和TCP 简单的对比如下: ? TCP 协议:可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。 ? UDP 协议:不可靠,差错控制开销较小,传输大小限制在64K 以下, 不需要建立连接。 使用 DatagramSocket 发送、接收数据 DatagramSocket 本身只是码头,不维护状态,不能产生IO 流,它的唯一作用就是接收和发送数据报,Java使用DatagramPacket 来代表数据报, DatagramSocket 接收和发送的数据都是通过DatagramPacket 对象完成的。 先看一下DatagramSocket 的构造器: ? DatagramSocket():创建一个 DatagramSocket 实例,并将该对象绑定到本机默认IP 地址、本机所有可用端口中随机选择的某个端口。 ? DatagramSocket(int prot):创建一个 DatagramSocket 实例,并将该对象绑定到本机默认IP 地址、指定端口。 ? DatagramSocket(int port, InetAddress laddr):创建一个 DatagramSocket 实例,并将该对象绑定到指定IP 地址、指定端口。 通过上面三个构造器中任意一个构造器即可创建一个DatagramSocket 实例, 通常在创建服务器时, 我们创建指定端口的DatagramSocket 实例——这样保证其他客户端可以将数据发送到该服务器。一旦得到了 DatagramSocket 实例之后, 就可以通过如下两个方法来接收和发送数据: ? receive(DatagramPacket p):从该 DatagramSocket 中接收数据报。 ? send(DatagramPacket p):以该 DatagramSocket 对象向外发送数据报。 从上面两个方法可以看出,使用DatagramSocket 发送数据报时, DatagramSocket 并不知道将该数据报发送到哪里,而是由 DatagramPacket 自