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