Java实现监听UDP协议的指定端口并收到数据按照十六进制输出方式

 更新时间:2024年04月15日 09:40:24   作者:霸道流氓气质  
这篇文章主要介绍了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的服务器上即可调试。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java发送短信系列之同步、异步发送短信

    java发送短信系列之同步、异步发送短信

    这篇文章主要介绍了java发送短信系列之同步、异步发送短信的相关资料,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 一文搞懂JAVA 修饰符

    一文搞懂JAVA 修饰符

    这篇文章主要介绍了JAVA 修饰符的的相关资料,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java中的switch新特性与使用详解

    Java中的switch新特性与使用详解

    这篇文章主要介绍了Java中的switch新特性与使用详解,Switch语句可以实现根据某一变量选则执行代码块,当然直接使用If语句也可以做到,但是有时候使用Switch语句往往更加简洁优美,需要的朋友可以参考下
    2023-11-11
  • 通过实例解析JMM和Volatile底层原理

    通过实例解析JMM和Volatile底层原理

    这篇文章主要介绍了通过实例解析JMM和Volatile底层原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • SpringBoot中5种高大上的yml文件读取方式

    SpringBoot中5种高大上的yml文件读取方式

    本文主要介绍了SpringBoot中5种高大上的yml文件读取方式,总结一下除了@Value和@ConfigurationProperties外,还能够通过哪些方式,来读取yml配置文件的内容,感兴趣的可以了解一下
    2022-03-03
  • Java生成及校验token的实践

    Java生成及校验token的实践

    Token 的生成和校验机制为应用程序提供了一种安全的身份验证和授权方式,可以用于用户认证、API 访问控制等场景,本文主要介绍了Java生成及校验token的实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 关于Mybatis中SQL节点的深入解析

    关于Mybatis中SQL节点的深入解析

    这篇文章主要给大家介绍了关于Mybatis中SQL节点的深入解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Java中枚举的实现原理介绍

    Java中枚举的实现原理介绍

    大家好,本篇文章主要讲的是Java中枚举的实现原理介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • SpringBoot拦截器实现项目防止接口重复提交

    SpringBoot拦截器实现项目防止接口重复提交

    基于SpringBoot框架来开发业务后台项目时,接口重复提交是一个常见的问题,本文主要介绍了SpringBoot拦截器实现项目防止接口重复提交,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • JAVA中的动态代理使用详解

    JAVA中的动态代理使用详解

    这篇文章主要介绍了JAVA中的动态代理使用详解,动态代理提供了一种灵活且非侵入式的方式,可以对对象的行为进行定制和扩展,它在代码重用、解耦和业务逻辑分离、性能优化以及系统架构中起到了重要的作用,,需要的朋友可以参考下
    2023-08-08

最新评论