UDPネットワークプログラミング(Java実装)

1.UDPネットワーク通信

  • クラスDategramSocketとクラスDategramPacketは、UDPに基づくネットワーク通信プロトコルを実装します
  • DategramSocket送受信するデータグラムソケットごとのUDPデータグラム
  • システムは、UDPデータグラムが宛先に安全に配信されることを保証しません。また、それらがいつ到着するかについても不確実ではありません。
  • DategramPacket オブジェクトはUDPデータグラムをカプセル化し、データグラムには送信者のIPアドレスとポート番号、および受信者のIPアドレスとポート番号が含まれます
  • UDPプロトコルの各データグラムは完全なアドレス情報を提供するため、エクスプレスパッケージを送信する場合と同様に、送信者と受信者の間に接続を確立する必要はありません。

2、コードの実装

送信者

    @Test
    public void sender() throws IOException {
    
    

        //使用空参构造器,将所有信息封装到数据报中
        DatagramSocket socket = new DatagramSocket();

        //数据报里面存放发送的数据以及对方的IP和端口号
        String str = "UDP发送";
        byte[] date = str.getBytes();
        InetAddress host = InetAddress.getLocalHost();
        DatagramPacket packet = new DatagramPacket(date,0,date.length,host,9999);

        //使用socket发送
        socket.send(packet);

        //关闭资源
        socket.close();
    }

レシーバー

    @Test
    public void receiver() throws IOException {
    
    
		//使用带端口号的构造器
        DatagramSocket socket = new DatagramSocket(9999);

        //将接收的数据存入packet
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);

        //socket接收packet
        socket.receive(packet);

        //输出内容到控制台
        System.out.println(new String(packet.getData(),0,packet.getLength()));

        //关闭资源
        socket.close();
    }

説明

UDPはTCPとは異なります。最初に起動したときにエラーは報告されませんが、送信者からのメッセージを正しく受信するには、最初に受信者を起動する必要があります。

おすすめ

転載: blog.csdn.net/weixin_45321793/article/details/111051143