1、文档
2、相关问题
2.1、UDP编程
public class UDPReceiver {
public static void main(String[] args) throws IOException {
// 创建一个DatagramSocket对象,准备在9999端口接受数据
DatagramSocket socket = new DatagramSocket(9999);
// 构建一个DatagramPacket对象,准备接受数据,一个数据包最大64K
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, 0, buf.length);
// 调用接收方法 将通过网络传输的DatagramPacket对象填充到packet对象,
// 当有数据到达时就会接收数据,没有的话阻塞等待
System.out.println("等待接收数据。。。。");
socket.receive(packet);
// 将packet进行拆包 取出数据,
int length = packet.getLength();
byte[] data = packet.getData();
System.out.println(new String(data, 0, length));
// 回复消息
data = "好的。明天见".getBytes();
packet = new DatagramPacket(data, data.length, InetAddress.getByName("127.0.0.1"), 9998);
socket.send(packet);
// 关闭资源
socket.close();
System.out.println("A端退出");
}
}
public class UDPSender {
public static void main(String[] args) throws IOException {
// 创建一个DatagramSocket对象,准备在9998端口接受数据
DatagramSocket socket = new DatagramSocket(9998);
// 将需要发送的数据 封装到DatagramPacket对象
byte[] data = "hello 明天吃火锅去?".getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("127.0.0.1"), 9999);
socket.send(packet);
// 接受从A端回复的信息
byte[] buf = new byte[1024];
packet = new DatagramPacket(buf, 0, buf.length);
// 调用接收方法 将通过网络传输的DatagramPacket对象填充到packet对象,
// 当有数据到达时就会接收数据,没有的话阻塞等待
System.out.println("等待接收数据。。。。");
socket.receive(packet);
// 将packet进行拆包 取出数据,
int length = packet.getLength();
data = packet.getData();
System.out.println(new String(data, 0, length));
// 关闭资源
socket.close();
System.out.println("B端退出");
}
}