Z
ZHANK
网络编程

UDP 与网络基础

了解 DatagramSocket、UDP 通信、IP 地址与端口

UDP 与网络基础

UDP 是无连接协议,速度快但不保证可靠送达。

学完本章你将: 了解 DatagramSocket、IP 地址、协议对比。


UDP 发送端

java
DatagramSocket socket = new DatagramSocket();
String message = "Hello via UDP!";
byte[] data = message.getBytes();

InetAddress address = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(
    data, data.length, address, 9999);

socket.send(packet);
socket.close();

UDP 接收端

java
DatagramSocket socket = new DatagramSocket(9999);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

System.out.println("等待 UDP 数据...");
socket.receive(packet); // 阻塞等待

String received = new String(packet.getData(), 0, packet.getLength());
System.out.println("收到:" + received +
    " 来自 " + packet.getAddress());

socket.close();

InetAddress 网络基础

java
// IP 地址
InetAddress local = InetAddress.getLocalHost();
System.out.println(local.getHostName());  // 主机名
System.out.println(local.getHostAddress()); // IP

InetAddress remote = InetAddress.getByName("www.baidu.com");
System.out.println(remote.getHostAddress()); // 解析后的 IP

TCP vs UDP

特性TCPUDP
连接面向连接无连接
可靠性保证送达,有序不保证
速度
场景HTTP、文件传输视频流、游戏、DNS
类比打电话寄明信片