UDP套接字

来源:互联网 发布:各国语言翻译软件 编辑:程序博客网 时间:2024/06/06 20:53

UDP 提供了一种不同于TCP的端到端服务,UDP 协议实际只实现两个功能:

(1),在IP协议的基础上添加了另一层地址。

(2),对数据在传输过程产生过程中进行错误校验,并抛弃已经损坏的数据。


UDP与TCP的不同点:

(1), UDP 套接字在使用前不需要进行连接。

(2),UDP 套接字与TCP套接字对信息边界的处理方式不同,UDP 套接字将保留边界信息。

(3),UDP 协议所提供的端到端的传输服务是尽力而为的,即UDP 套接字将尽可能的传送信息,但并不保证信息一定能成功到达目的

         地址,而且信息到达的顺序与其发送顺序不一定一致。


1. DatagramPacket

与TCP协议发送和接受字节流不同,UDP终端交换的是一种称为数据报文的自包含信息。

发送信息时,首先要有一个DatagramPacket的实例,然后将这个实例作为参数传递给DatagramSocket

类的send()方法。


2. UDP客户端

UDP 客户端首先向被动等待联系的服务器端发送一个数据报文。

(1),创建一个DatagramSocket实例,可以选择对本地地址和端口号进行设置。

(2),使用DatagramSocket类的send()和receive()方法来接收和发送DatagramPacket实例,进行通信。

(3),通信完成后,使用DatagramSocket类的close()方法来销毁该套接字。

与Socket类不同,使用DatagramSocket实例在创建时并不需要指定目的地址,其实这也是TCP协议和UDP协议的最大不同点之一。

在进行数据交换前,TCP套接字必须与特定的主机和另一个端口号上的TCP套接字建立连接,之后在连接关闭前,该套接字就只能与相连

的套接字通信。UDP套接字在通信前不需要建立连接,每个数据包都可以发送或接收于不同的目的地址。

使用UDP协议的一个后果就是数据报文可能丢失。


3,UDP服务器端

与TCP服务器一样,UDP服务器的工作是建立一个通信终端,并被动等待客户端发起连接。但由于UDP是无连接的,UDP通信通过客户端

的数据报文初始化,并没有TCP中建立连接那一步。

(1),创建一个DatagramSocket实例,指定本地端口号,并可以选择指定本地地址。此时服务器已经准备好从任何客户端接收数据报文。

(2),使用DatagramSocket类的receive()方法来接收一个Datagramsocket实例,当receive()返回时,数据报文就包含了客户端的地址,

这样我们就知道回复信息发送到什么地址了。

(3),使用DatagramSocket类的send()和receive()方法来接收或发送DatagramPacket实例,来进行通信。

与UDP客户端不同的是,UDP服务器必须显示的设置它的本地端口号,并使客户端知道该端口,否则客户端就不知道把信息发送到什么位置了。

UDP 服务器为所有通信使用同一个套接字,这点与TCP服务器不同,TCP服务器为每个成功返回的accept()方法创建一个新的套接字。


0 0
原创粉丝点击