一.简述
- UDP传输:UDP是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中的传输层协议,它是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
- UDP和TCP对比
UDP | TCP |
将数据源和目的封装成数据报中,不需要建立连接 | 建立连接,形成传输数据的通道 |
每个数据报的大小在限制在64k | 在连接中进行大数据量传输 |
因无需连接,是不可靠协议 | 通过三次握手完成连接,是可靠协议 |
不需要连接,速度快 | 必须建立连接,效率会稍低 |
二.编程步骤
- DatagramSocket与DatagramPacket建立发送端和接收端
- 建立发送包,调用Socket的发送接收方法
- 关闭Socket
- 发送端与接收端是两个独立的程序
三.简单实例
接收端
import java.io.*;
import java.net.*;
public class Main_10_26_server {
public static void main(String[] args) throws IOException {
//1、 构件服务端 +端口
DatagramSocket server=new DatagramSocket(8888);
//2、封装成包 DatagramPacket(byte[] buf,int lenth) 相当于构建接受池
byte[] container=new byte[1024];
DatagramPacket datagramPacket=new DatagramPacket(container, container.length);
//接收客户端发来的数据
server.receive(datagramPacket);
//获取接收到的数据
byte [] data=datagramPacket.getData();
//获取接收到的数据的长度
int len=datagramPacket.getLength();
//输出相关的信息
System.out.println(new String(data,0,len));
//关闭接收流
server.close();
}
}
发送端
import java.io.*;
import java.net.*;
public class Main_10_26_client {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket=new DatagramSocket(9999);//创建udp套接字
String meString="连接成功";
byte[] bs=meString.getBytes();
DatagramPacket datagramPacket=new DatagramPacket(bs, bs.length,new InetSocketAddress("localhost",8888));
datagramSocket.send(datagramPacket);
datagramSocket.close();
}
}
运行结果: