一、UDP数据报
在网络基础中、已知在封装的过程中,应用层协议打包进入传输层。进入传输层后,又有两种协议可再次进行打包,让数据顺利进入网络层,然后再打包成IP协议。
其中一种就是UDP协议。
(一)、UDP协议特征:
- 无连接:不需要接通,直接发送数据
- 不可靠传输:发送方不知道对方有没有收到数据,只管发送就是了。
- 面向数据报:数据为单位进行传输
(注:TCP是以字节为单位进行传输)。 - 全双工:一条链路,双向通信。
(注:半双工指有条链路,单向通信。)
(二)、UDP具体报文格式。

- 源端口:从哪里种应用来。
- 目的端口:要到那种应用去。
- 报文长度:即记录这个数据报的长度,(由于设计只占两个字节,所以无法表示很长的数据报,由此也产生了TCP协议。)
- 检验和:验证网络传输的数据是否正确。(是一种基于内容的算法,代入内容数据进行计算)。
二、UDP的socket(嵌套字)
(一)、DatagramSocket类:
- 对应操作系统中的socket文件(网卡)
- 从socket文件读数据,本质上就是读网卡。
- 向socket文件上写数据,本质上也是在写网卡。
import java.net.DatagramSocket;
import java.util.Arrays;
public class UdpServer {
private static final int PORT = 8888;
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(PORT);
}
}
}
(二)、DatagramPacket类
- 代表一个数据报,使用UDP传输的数据的基本单位。每次发送/接受数据,都是在传输和接收一个Datagrampacket对象。
public class UdpServer {
private static final int PORT = 8888;
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(PORT);
//不停的接收客户端udp数据报
while (true){
// 2.创建数据报,用于接收客户端发送的数据
byte[] bytes = new byte[1024];//1m=1024kb, 1kb=1024byte, UDP最多
64k(包含UDP首部8byte)
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
}
}
版权声明:本文为m0_60391870原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。