Java DatagramSocket和DatagramPacket
Java DatagramSocket和DatagramPacket类用于无连接套接字编程。
Java DatagramSocket类
Java DatagramSocket 类表示用于发送和接收数据报包的无连接套接字。
数据报基本上是一种信息,但不能保证其内容,到达或到达时间。
DatagramSocket类的常用构造方法
DatagramSocket()抛出SocketEeption: 它创建一个数据报套接字,并将其与本地计算机上的可用端口号绑定。
DatagramSocket(int port)抛出SocketEeption: 它创建一个数据报套接字,并将其与给定的端口号绑定。
DatagramSocket(int端口,InetAddress地址)抛出SocketEeption: 它创建一个数据报套接字,并将其与指定的端口号和主机地址绑定。
Java DatagramPacket类
Java DatagramPacket 是可以发送或接收的消息。如果发送多个数据包,则它可能以任何顺序到达。此外,不能保证数据包的传递。
DatagramPacket类的常用构造方法
DatagramPacket(byte [] barr,整数长度): 它创建一个数据报包。该构造函数用于接收数据包。
DatagramPacket(byte [] barr,整数长度,InetAddress地址,整数端口): 它创建一个数据报包。此构造函数用于发送数据包。
通过DatagramSocket发送DatagramPacket的示例
//DSender.javaimport 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.javaimport 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();
}
}