场景

对接协议中需要监听UDP协议的指定端口并监听数据,且数据格式为十六进制。

如果是在linux服务上,可以快速通过C或者python脚本等方式实现。

这里使用Java代码实现,可便于后续做其他存储数据等的扩展,且只需要在服务器上安装jdk,均可进行运行和数据调试。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

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的服务器上即可调试。

posted on 2024-04-11 10:43  霸道流氓  阅读(23)  评论(0编辑  收藏  举报

Live2D