美文网首页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