Java 简单UDP通信

发送端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

/**
 * UDP 发送端
 * @author Administrator
 *
 */
public class Demo2 {
    public static void main(String[] args) throws Exception {
        
        /**
         * 准备发送端
         * DatagramSocket()
         * 构造一个数据报套接字绑定到本地主机机器上的任何可用的端口。 
         */
        DatagramSocket ds = new DatagramSocket();
        
        /**
         * 准备数据包
         *1、 DatagramPacket(byte[] buf, int length)
         * 构造一个 DatagramPacket length接收数据包的长度
         *2、 String的getBytes()
         * 方法是得到一个操作系统默认的编码格式的字节数组
         *3、 setSocketAddress()
         * 设置SocketAddress(通常是IP地址+端口号)都的远程主机发送数据报。
         * 4、InetSocketAddress(InetAddress addr, int port)
         * 创建一个套接字地址的IP地址和端口号。 
         */
        String str = "你好,UDP";
        byte[] ch = str.getBytes();
        
        DatagramPacket dp = new DatagramPacket(ch, ch.length);
        dp.setSocketAddress(new InetSocketAddress("127.0.0.1", 12345));
        
        // 发送数据
        ds.send(dp);
        
        // 关闭套接字
        ds.close();
        
    }
}

接收端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * UDP 接收端
 * @author Administrator
 *
 */
public class Demo3 {
    public static void main(String[] args) throws Exception {
        
        // 创建接收端
        DatagramSocket ds = new DatagramSocket(12345); 
        
        /**
         * 接收数据包
         * receive(DatagramPacket p)
         * 从这个套接字接收数据报包。 
         */
        byte[] data = new byte[1024];
        DatagramPacket dp = new DatagramPacket(data, data.length);
        ds.receive(dp);
        
        // 获取接受到的信息
        String str = new String(data, 0, dp.getLength());
        System.out.println(str);
        
        // 关闭接收端
        ds.close();
    }
}