美文网首页java复习
2020-07-11UDP通信程序

2020-07-11UDP通信程序

作者: 智障猿 | 来源:发表于2020-07-14 20:10 被阅读0次

UDP

  • 通信原理:UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个socket对象,但是这两个socket只是发送、接收数据的对象,因次对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念
  • java提供了DatagramSocket类作为基于UDP协议的Socket

UDP发送数据

  • 发送步骤
    ①创建发送端的Socket对象(DatagramSocket())
    ②创建数据,并把数据打包(DatagramPacket(byte[] buf,int length,InetAddress address,int port))
    ③调用DatagramSocket对象的方法发送数据(send()方法)
    ④关闭发送端(close()方法)
public class UdpSend {
    public static void main(String[] args) throws IOException {
        //创建发送端的socket对象(DatagramSocket)
        //DatagramSocket()构造数据套接字并将其绑定到本地主机上的任意可用端口
        DatagramSocket datagramSocket = new DatagramSocket();
        //创建数据,并把数据打包
        byte[] bytes = "hello,udp,我来了".getBytes();
        int len = bytes.length;
        InetAddress address = InetAddress.getByName("DESKTOP-0NL0JDK");
        int port = 10086;
        DatagramPacket datagramPacket = new DatagramPacket(bytes,len,address,port);
        //调用Datagramsocket对象的方法发送对象
        datagramSocket.send(datagramPacket);
        //关闭发送站
        datagramSocket.close();
    }
}

UDP接收数据

  • 接收步骤
    ①创建接收端的Socket对象(DatagramSocket(int port))
    ②创建一个数据包,用于接收数据
    (DatagramPacket(byte[] buf,int length))
    ③调用DatagramSocket对象的方法接收数据
    (void recevie(DatagramPacket dp))
    ④解析数据包,并把数据在控制台显示
    (byte[] getData();int getLength())
    ⑤关闭接收端
    (void close())
public class UdpReceiver {
    public static void main(String[] args) throws IOException {
        //创建接收端的Socket对象(DatagramSocket)
        //Datagramsocket(int port)构造数据报套接字并将其绑定到本地主机上的指定端口
        DatagramSocket datagramSocket = new DatagramSocket(10086);
        //创建一个数据包,用于接收数据
        byte[] bytes= new byte[1024];
        DatagramPacket datagramPacket = new DatagramPacket(bytes,1024);
        //调用DatagramSocket对象的方法接收数据
        datagramSocket.receive(datagramPacket);
        //获得实际接收的数据长度
        int length = datagramPacket.getLength();
        datagramSocket.close();
        //解析数据包,并把数据在控制台上显示
        byte[] data = datagramPacket.getData();
        String str = new String(data,0,length);
        System.out.println(str);
        //关闭数据
        datagramSocket.close();
    }
}

相关文章

网友评论

    本文标题:2020-07-11UDP通信程序

    本文链接:https://www.haomeiwen.com/subject/wipicktx.html