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

总结

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

相关文章

  • Springmvc实现文件下载2种实现方法

    Springmvc实现文件下载2种实现方法

    这篇文章主要介绍了Springmvc实现文件下载2种实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • springboot使用IDEA远程Debug

    springboot使用IDEA远程Debug

    项目上线之后,如果日志打印的很模糊或者业务逻辑比较复杂,有时候无法定位具体的错误原因,因此可以通过IDEA远程代理进行Debug,本文就来介绍一下如何使用
    2021-06-06
  • Java通过Scanner了解if...else if语句

    Java通过Scanner了解if...else if语句

    这篇文章主要介绍了Java通过Scanner了解if...else if语句,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Spring mvc如何实现数据处理

    Spring mvc如何实现数据处理

    这篇文章主要介绍了Spring mvc如何实现数据处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java中的字符编码问题处理心得总结

    Java中的字符编码问题处理心得总结

    Java中的String类默认是Unicode编码,大家平常所说的UTF-8就是使用最广的一种unicode的实现方式,以下我们还是来看一下Java中的字符编码问题处理心得总结:
    2016-06-06
  • SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    SpringBoot+Vue+Redis实现单点登录(一处登录另一处退出登录)

    小编接到一个需求,需要实现用户在浏览器登录后,跳转到其他页面,当用户在其它地方又登录时,前面用户登录的页面退出登录,这篇文章主要介绍了SpringBoot+Vue+Redis实现单点登录,需要的朋友可以参考下
    2019-12-12
  • JVM中堆内存和栈内存的区别

    JVM中堆内存和栈内存的区别

    本文主要介绍了JVM中堆内存和栈内存的区别,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Java中Swing类实例讲解

    Java中Swing类实例讲解

    这篇文章主要介绍了Java中Swing类实例讲解,文中用代码实例讲解的很清楚,有需要的同学可以研究下
    2021-02-02
  • Java中基于maven实现zxing二维码功能

    Java中基于maven实现zxing二维码功能

    这篇文章主要介绍了Java中基于maven实现zxing二维码功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Java实战网上电子书城的实现流程

    Java实战网上电子书城的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+JSP+maven+Mysql实现一个网上电子书城,大家可以在过程中查缺补漏,提升水平
    2022-01-01

最新评论