UDP通信协议示例

      UDP的通讯与TCP的不同,UDP使用DatagramPacket和DatagramSocket:DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字.TCP使用ServerSocket和Socket。

UDP示例源码(注释很详细):

1.发送UDP数据报的一端,假设为server:

public class UDPServerDemo {
    public static void main(String[] args) {
        String info = "我是帅到被人砍的Mr Zhang";   //要发送的信息
        byte[] bytes = info.getBytes();            //字节数组
        //封装一个udp数据包
        try {
            DatagramPacket dp = new DatagramPacket(
                    bytes,//数据包数据
                    0,//分组数据偏移量
                    bytes.length,//长度
                    InetAddress.getByName("127.0.0.1"),//目的地址
                    8000//目的端口号
            );
            //DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字
            DatagramSocket socket = new DatagramSocket(9000);//本程序端口
            socket.send(dp);       //发送用send()即可
            socket.close();        //记得关闭socket
        } catch (UnknownHostException | SocketException e) {//某些异常不可以放在一起的
            e.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

2.接收数据报的一端,假设为client:

public class UDPClientDemo {
    public static void main(String[] args) {
        byte[] bytes = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bytes,bytes.length);//空的

        try {
            DatagramSocket socket = new DatagramSocket(8000);
            System.out.println("正在接受数据中");
            socket.receive(dp);//开始接收数据
            String s = new String(dp.getData(),0,dp.getLength());
            System.out.println(s);
            socket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        }catch (IOException e1){
            e1.printStackTrace();
        }

    }
}

3.程序效果图(要先运行client,使其处于接收数据的状态,再运行server):

UDP通信协议示例_第1张图片


你可能感兴趣的:(java,JAVA语言基础)