安卓 udp 接收16进制数据
时间: 2023-09-12 17:07:10 浏览: 88
要在安卓设备上接收UDP数据,可以使用Java中的DatagramSocket类。以下是一个示例代码,可以接收16进制数据:
```
DatagramSocket socket = new DatagramSocket(8888); // 创建一个UDP socket,端口号为8888
byte[] buffer = new byte[1024]; // 创建一个缓冲区,用于存储接收到的数据
DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // 创建一个数据包,指定缓冲区和缓冲区大小
while (true) {
socket.receive(packet); // 接收数据包
String hexData = bytesToHex(buffer, packet.getLength()); // 将接收到的数据转换成16进制字符串
System.out.println("Received data: " + hexData);
}
// 将字节数组转换成16进制字符串的方法
public static String bytesToHex(byte[] bytes, int length) {
StringBuilder sb = new StringBuilder(length * 2);
for (int i = 0; i < length; i++) {
sb.append(String.format("%02x", bytes[i]));
}
return sb.toString();
}
```
在上述代码中,创建了一个DatagramSocket对象来监听端口号为8888的UDP数据包。然后在一个无限循环中不断接收数据包,并将接收到的字节数组转换成16进制字符串打印出来。注意在接收数据包前,需要先创建一个DatagramPacket对象来指定缓冲区和缓冲区大小。
阅读全文