前言
UDP
(用户数据报协议)是一种无连接协议,用于在网络上发送和接收数据报。UDP
通信的特点是简单、速度快、开销低,但不保证数据包的顺序和可靠性。UDP
常用于实时应用,如视频流、在线游戏和DNS
查询等。
说明
在UDP
(用户数据报协议)通信中,可以使用单播和组播两种模式
-
【单播模式】
1、单播是点对点的通信方式,数据报从一个单一的源地址发送到一个单一的目标地址。
-
【组播模式】
1、组播地址:这是一个特殊的IP地址范围,用于组播通信。组播地址的范围是 (224.0.0.0 - 239.255.255.255
)。
2、加入组播组:客户端和服务端必须使用相同的组播地址加入组播组。这意味着它们都会监听同一个组播地址上的数据包。
3、发送数据:发送方将数据包发送到组播地址,所有加入该组播组的接收方都可以接收到这个数据包。。
UDP
通信的基本步骤:
1、发送方(Sender):
- 创建一个
UDP
套接字 - 构造要发送的数据包(
DatagramPacket
) - 通过套接字发送数据包
2、接收方(Receiver):
- 创建一个
UDP
套接字并绑定到一个特定端口 - 准备一个缓冲区来接收数据包
- 通过套接字接收数据包
简单实现
1、单播模式发送端
class UnicastSender {
private var socket: DatagramSocket? = null
fun sendData() {
try {
socket = DatagramSocket()
val message = "I'm UniCast"
val buffer = message.toByteArray()
val receiverAddress = InetAddress.getByName("192.168.3.181")
val packet = DatagramPacket(buffer, buffer.size, receiverAddress, 4445