Java UDP 实现

01.客户端发送数据

  • 客户端发送数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 端口号
*/
private static final int PORT = 8080;

/*
* UDP协议发送数据:
* 1.创建发送端Socket对象
* 2.创建数据,并把数据打包
* 3.调用Socket对象发送方法发送数据包
* 4.释放资源
*/
private void udpSendMessage(String serverAddress) {
String content = "yang";
// 创建发送端Socket对象
try {
// 创建发送端Socket对象
DatagramSocket ds = new DatagramSocket();
// 创建数据,并把数据打包
byte[] bys = content.getBytes();
InetAddress byName = InetAddress.getByName(serverAddress);
DatagramPacket dp = new DatagramPacket(bys, bys.length,byName ,PORT);
// 调用Socket对象发送方法发送数据包
ds.send(dp);
// 释放资源
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}

02.服务端接收数据

  • 服务端接收数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
* UDP协议接收数据:
* 1.创建接收端Socket对象
* 2.创建一个数据包(接收容器)
* 3.调用Socket对象接收方法接收数据包
* 4.解析数据包
* 5.释放资源
*/
private void receive_udp() {
try {
// 创建接收端Socket对象
DatagramSocket ds = new DatagramSocket(PORT);
// 创建一个数据包(接收容器)
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
// 调用Socket对象接收方法接收数据包
ds.receive(dp);
// 获取对方的ip
String ip = dp.getAddress().getHostAddress();
// 解析数据
String data = new String(dp.getData(), 0, dp.getLength());
Message message = new Message();
message.obj = data;
message.what = 2;
handler.sendMessage(message);
// 关闭数据库
ds.close();
} catch (Exception e) {
e.printStackTrace();
}
}