UDP协议
- 用户数据报协议(User datagram Protocol)
- UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发送数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。
- 由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输
UDP通信原理
- UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送、接收数据的对象,因此对于基于UDP协议的通信双方而言 ,没有所谓的客户端和服务器的概念
- Java提供了DatagramSocket类作为基于UDP协议的Socket
发送端代码示例:
package com.wangLuo;
import java.io.IOException;
import java.net.*;
/**
* @author 林高禄
* @create 2020-05-21-17:05
*/
public class UDPSend {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
String s = "我介绍个富婆给你,请务必接受";
byte[] bytes = s.getBytes();
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("192.168.1.55"),10);
ds.send(dp);
ds.close();
}
}
运行发送端,把数据发送出去,不管有没有存在接收端
接收端代码示例: 端口号定为10.,因为我们上面的发送端的端口号为10
package com.wangLuo;
import java.io.IOException;
import java.net.*;
/**
* @author 林高禄
* @create 2020-05-21-17:12
*/
public class UDPReceive {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10);
byte[] by = new byte[1024];
DatagramPacket dp = new DatagramPacket(by,by.length);
ds.receive(dp);
byte[] data = dp.getData();
System.out.println(new String(data));
ds.close();
}
}
运行接收端,程序一直再等待,因为上一个发送端运行结束的时候,我们的接收端还没有运行,所以没有收到任何数据,接收端等待下一个发送端的数据
这时我们再运行发送端,发送端运行结束,看到接收端接收到数据输出:

我们发现输出后面还对了很多空字符,是因为我们接收端把整个接收的Data大小转为字符串了,所以我们把代码改进,只转接收到的内容,截取含有内容的Data的长度
package com.wangLuo;
import java.io.IOException;
import java.net.*;
/**
* @author 林高禄
* @create 2020-05-21-17:12
*/
public class UDPReceive {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10);
byte[] by = new byte[1024];
DatagramPacket dp = new DatagramPacket(by,by.length);
ds.receive(dp);
byte[] data = dp.getData();
int length = dp.getLength();
System.out.println(new String(data,0,length));
ds.close();
}
}
这样拿到的就是实际的数据
基于这样,我们就用UDP协议做一个简单的聊天室。
本文深入解析UDP协议的特点及工作原理,包括其无连接通信特性与在音频、视频和普通数据传输中的优势。通过Java示例代码,演示如何使用DatagramSocket实现UDP数据包的发送与接收,最后展示如何基于UDP协议构建简易聊天室。
949

被折叠的 条评论
为什么被折叠?



