在UDP协议的使用中,我们常用不同的语言进行服务器和客户端的建设。所以,掌握一种语言进行UDP协议的使用是必要的。所以,今天我们就来介绍一下,网络编程方面的UDP协议。还是要我们看一下UDP协议基础内容吧。
基于UDP协议的网络编程
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协议基础内容方面,我们需要对UDP和TCP进行一下简单的对比:
TCP协议:可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大。
UDP协议:不可靠,差错控制开销较小,传输大小限制在64K以下,不需要建立连接。