接收端
- 使用DatagramSocket指定端口 创建接收端
- 准备容器 封装成DatagramPacket包裹
- 阻塞式接受包裹receive(DatagramPacket p)
- 分析数据 ( byte[] getData() getLength() )
- 释放资源
public class UdpService {
public static void main(String[] args) throws IOException {
System.out.println("接受方启动中");
// 1、使用DatagramSocket指定端口 创建接收端
DatagramSocket service = new DatagramSocket(9999);
// 2、准备容器 封装成DatagramPacket包裹
byte[] container = new byte[1024*60];
DatagramPacket packet = new DatagramPacket(container,0,container.length);
// 3、阻塞式接受包裹receive(DatagramPacket p)
service.receive(packet);
// 4、分析数据
// byte[] getData()
// getLength()
byte[] datas = packet.getData();
System.out.println(new String(datas));
// * 5、释放资源
service.close();
}
}
发送端
- 使用DatagramSocket指定端口 创建发收端
- 准备数据 一定转成字节数组
- 封装成DatagramPacket包裹,需要指定目的地
- 发送包裹send(DatagramPacket p)
- 释放资源
public class UdpClient {
public static void main(String[] args) throws IOException {
System.out.println("发送方启动中");
// 1、使用DatagramSocket指定端口 创建接收端
DatagramSocket client = new DatagramSocket(8888);
// 2、准备数据 一定转成字节数组
String data = "你好啊";
byte[] datas = data.getBytes();
// 3、封装成DatagramPacket包裹,需要指定目的地
DatagramPacket packet = new DatagramPacket(datas,0,datas.length,
new InetSocketAddress("localhost",9999));
// 4、发送包裹send(DatagramPacket p)
client.send(packet);
// 5、释放资源
client.close();
}
}
DatagramSocket:用于发送或接收数据包的套接字
DatagramPacket:数据包
接收发送其他类型数据
/**
* 发送端
* 1、使用DatagramSocket指定端口 创建发收端
* 2、将基本类型转成字节数组
* 3、封装成DatagramPacket包裹,需要指定目的地
* 4、发送包裹send(DatagramPacket p)
* 5、释放资源
*/
public class UdpTypeClient {
public static void main(String[] args) throws IOException {
System.out.println("发送方启动中");
// 1、使用DatagramSocket指定端口 创建接收端
DatagramSocket client = new DatagramSocket(8888);
// 2、将基本类型转成字节数组
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(baos));
//操作数据类型+数据
dos.writeUTF("你好");
dos.writeInt(18);
dos.writeBoolean(false);
dos.writeChar('a');
dos.flush();
byte[] datas = baos.toByteArray();
// 3、封装成DatagramPacket包裹,需要指定目的地
DatagramPacket packet = new DatagramPacket(datas,0,datas.length,
new InetSocketAddress("localhost",9999));
// 4、发送包裹send(DatagramPacket p)
client.send(packet);
// 5、释放资源
client.close();
}
}
/**
* 接收端
* 1、使用DatagramSocket指定端口 创建接收端
* 2、准备容器 封装成DatagramPacket包裹
* 3、阻塞式接受包裹receive(DatagramPacket p)
* 4、分析数据 将字节数组还原为对应的类型即可
* byte[] getData()
* getLength()
* 5、释放资源
*/
public class UdpTypeService {
public static void main(String[] args) throws IOException {
System.out.println("接受方启动中");
// 1、使用DatagramSocket指定端口 创建接收端
DatagramSocket service = new DatagramSocket(9999);
// 2、准备容器 封装成DatagramPacket包裹
byte[] container = new byte[1024*60];
DatagramPacket packet = new DatagramPacket(container,0,container.length);
// 3、阻塞式接受包裹receive(DatagramPacket p)
service.receive(packet);
// 4、分析数据 将字节数组还原为对应的类型即可
// byte[] getData()
// getLength()
byte[] datas = packet.getData();
System.out.println(new String(datas));
DataInputStream dis = new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(datas)));
String msg = dis.readUTF();
int age = dis.readInt();
boolean flag = dis.readBoolean();
char ch = dis.readChar();
System.out.println(msg+"-->"+flag);
// * 5、释放资源
service.close();
}
}