Java实现监听UDP协议的指定端口并收到数据按照十六进制输出方式
作者:霸道流氓气质
这篇文章主要介绍了Java实现监听UDP协议的指定端口并收到数据按照十六进制输出方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
场景
对接协议中需要监听UDP协议的指定端口并监听数据,且数据格式为十六进制。
如果是在linux服务上,可以快速通过C或者python脚本等方式实现。
这里使用Java代码实现,可便于后续做其他存储数据等的扩展,且只需要在服务器上安装jdk,均可进行运行和数据调试。
实现
1、新建Java类
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpTest { public static void main(String[] args) { int port = 21000; // 选择一个未被使用的端口号 try { // 创建DatagramSocket对象,并绑定到指定的本地端口 DatagramSocket socket = new DatagramSocket(port); System.out.println("Listening on port: " + socket.getLocalPort()); // 创建一个DatagramPacket用于接收数据 byte[] buffer = new byte[1024]; // 接收缓冲区 DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // 循环监听数据包 while (true) { socket.receive(packet); // 接收数据包 int length = packet.getLength(); // 获取实际接收到的数据长度 byte[] data = new byte[length]; // 创建实际大小的数据副本 System.arraycopy(buffer, 0, data, 0, length); // 输出十六进制数据 StringBuilder hexOutput = new StringBuilder(); for (byte b : data) { hexOutput.append(String.format("%02X ", b)); } System.out.println(hexOutput); } } catch (IOException e) { e.printStackTrace(); } } }
2、注意不要新增包名
然后在此类的路径下打开cmd,确保电脑已经安装jdk,进行编译成class文件
输入如下指令
javac -encoding utf-8 UdpTest.java
因为这里含有中文,所以指定编码格式
编译成功后产生class文件
运行class文件
java UdpTest
3、使用UDP测试工具
发送十六进制数据并调试
则后续将此class文件放到需要调试数据的安装jdk的服务器上即可调试。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。