1.udp是什么?
- 全称为User Datagram Protocol,用户数据报协议
- 无连接的传输协议
- 无连接、不可靠、快速传输
2.和TCP有什么区别?
- TCP是面向连接,udp是无连接,两者都是Internet传输层的主要协议
3.应用场景?
-
强调传输性能而不是完整性
-
传输少量数据、不对传送数据包进行可靠性保证
-
DNS、TFTP、SNMP、NFS、音频、多媒体应用等
优势、问题等可参考https://blog.csdn.net/weixin_39138071/article/details/79630133
//发送端
public class TestUdp {
public static void main(String[] args) {
DatagramSocket dSocket;
try {
//指定本地端口
dSocket = new DatagramSocket(45000);
//创建发送类型的数据包,设置接收端的ip和端口号以及需要发送的信息
DatagramPacket dPacket = new DatagramPacket("cq1234567".getBytes(), "cq1234567".length(), InetAddress.getByName("x.x.x.x"), 8080);
//发送信息
dSocket.send(dPacket);
//创建接收缓冲区
byte[] bt = new byte[1024];
//创建接收类型的数据包
DatagramPacket rePacket = new DatagramPacket(bt, bt.length);
//接收响应信息
dSocket.receive(rePacket);
//打印接收的信息
String daString = new String(rePacket.getData(),0,rePacket.getLength());
System.out.println(daString);
dSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//接收端
public class TestReceiverUdp {
public static void main(String[] args) {
try{
//指定接收端的端口
int port = 8080;
DatagramSocket socket = new DatagramSocket(port);
byte[] bt = new byte[1024];
DatagramPacket rePacket = new DatagramPacket(bt,bt.length);
socket.receive(rePacket);
String string = new String(rePacket.getData(),0,rePacket.getLength());
System.out.println(string);
byte[] sendbyte = "testcq".getBytes();
DatagramPacket sendPac = new DatagramPacket(sendbyte, sendbyte.length, InetAddress.getByName("x.x.x.x"), 45000);
socket.send(sendPac);
socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
}