📜  Java DatagramSocket和DatagramPacket

📅  最后修改于: 2020-09-28 04:40:19             🧑  作者: Mango

Java DatagramSocket和DatagramPacket

Java DatagramSocket和DatagramPacket类用于无连接套接字编程。

Java DatagramSocket类

Java DatagramSocket类表示用于发送和接收数据报包的无连接套接字。

数据报基本上是一种信息,但不能保证其内容,到达或到达时间。

常用的DatagramSocket类的构造方法

  • DatagramSocket()抛出SocketEeption:它将创建一个数据报套接字,并将其与本地主机上的可用端口号绑定。
  • DatagramSocket(int port)抛出SocketEeption:它创建一个数据报套接字,并将其与给定的端口号绑定。
  • DatagramSocket(int port,InetAddress address)抛出SocketEeption:它创建一个数据报套接字,并将其与指定的端口号和主机地址绑定。

Java DatagramPacket类

Java DatagramPacket是可以发送或接收的消息。如果发送多个数据包,则它可能以任何顺序到达。此外,不能保证数据包的传递。

常用的DatagramPacket类的构造方法

  • DatagramPacket(byte [] barr,int length):它创建一个数据报包。该构造函数用于接收数据包。
  • DatagramPacket(byte [] barr,int长度,InetAddress地址,int端口):它创建一个数据报包。该构造函数用于发送数据包。

通过DatagramSocket发送DatagramPacket的示例

//DSender.java
import java.net.*;
public class DSender{
  public static void main(String[] args) throws Exception {
    DatagramSocket ds = new DatagramSocket();
    String str = "Welcome java";
    InetAddress ip = InetAddress.getByName("127.0.0.1");
   
    DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), ip, 3000);
    ds.send(dp);
    ds.close();
  }
}

通过DatagramSocket接收DatagramPacket的示例

//DReceiver.java
import java.net.*;
public class DReceiver{
  public static void main(String[] args) throws Exception {
    DatagramSocket ds = new DatagramSocket(3000);
    byte[] buf = new byte[1024];
    DatagramPacket dp = new DatagramPacket(buf, 1024);
    ds.receive(dp);
    String str = new String(dp.getData(), 0, dp.getLength());
    System.out.println(str);
    ds.close();
  }
}