Java實現(xiàn)監(jiān)聽UDP協(xié)議的指定端口并收到數(shù)據(jù)按照十六進(jìn)制輸出方式
場景
對接協(xié)議中需要監(jiān)聽UDP協(xié)議的指定端口并監(jiān)聽數(shù)據(jù),且數(shù)據(jù)格式為十六進(jìn)制。
如果是在linux服務(wù)上,可以快速通過C或者python腳本等方式實現(xiàn)。
這里使用Java代碼實現(xiàn),可便于后續(xù)做其他存儲數(shù)據(jù)等的擴展,且只需要在服務(wù)器上安裝jdk,均可進(jìn)行運行和數(shù)據(jù)調(diào)試。
實現(xiàn)
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 {
// 創(chuàng)建DatagramSocket對象,并綁定到指定的本地端口
DatagramSocket socket = new DatagramSocket(port);
System.out.println("Listening on port: " + socket.getLocalPort());
// 創(chuàng)建一個DatagramPacket用于接收數(shù)據(jù)
byte[] buffer = new byte[1024]; // 接收緩沖區(qū)
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
// 循環(huán)監(jiān)聽數(shù)據(jù)包
while (true) {
socket.receive(packet); // 接收數(shù)據(jù)包
int length = packet.getLength(); // 獲取實際接收到的數(shù)據(jù)長度
byte[] data = new byte[length]; // 創(chuàng)建實際大小的數(shù)據(jù)副本
System.arraycopy(buffer, 0, data, 0, length);
// 輸出十六進(jìn)制數(shù)據(jù)
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,確保電腦已經(jīng)安裝jdk,進(jìn)行編譯成class文件
輸入如下指令
javac -encoding utf-8 UdpTest.java
因為這里含有中文,所以指定編碼格式

編譯成功后產(chǎn)生class文件
運行class文件
java UdpTest

3、使用UDP測試工具
發(fā)送十六進(jìn)制數(shù)據(jù)并調(diào)試

則后續(xù)將此class文件放到需要調(diào)試數(shù)據(jù)的安裝jdk的服務(wù)器上即可調(diào)試。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Spring中實現(xiàn)接口動態(tài)的解決方法
最近在工作遇到的一個,發(fā)現(xiàn)網(wǎng)上的資料較少,所以想著總結(jié)分享下,下面這篇文章主要給大家介紹了關(guān)于Spring中實現(xiàn)接口動態(tài)的解決方法,文中通過完整的示例代碼給大家介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
Spring Boot 非web應(yīng)用程序的實現(xiàn)
SpringBoot框架中,要創(chuàng)建一個非Web應(yīng)用程序(純 Java 程序),有兩種方式,下面就來介紹一下,感興趣的可以來了解一下2025-03-03
手把手帶你掌握SpringBoot RabbitMQ延遲隊列
RabbitMQ 是一個由Erlang語言開發(fā)的AMQP的開源實現(xiàn),支持多種客戶端。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)不俗,下文將帶你深入了解 RabbitMQ 延遲隊列2021-09-09
Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式
這篇文章主要介紹了Java多線程之 FutureTask:帶有返回值的函數(shù)定義和調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
java實現(xiàn)HmacSHA256算法進(jìn)行加密方式
這篇文章主要介紹了java實現(xiàn)HmacSHA256算法進(jìn)行加密方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
springboot整合Dubbo與Feign的實現(xiàn)?(無注冊中心)
本文主要介紹了springboot整合Dubbo與Feign的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
讓Java后臺MySQL數(shù)據(jù)庫能夠支持emoji表情的方法
最近開發(fā)的iOS項目因為需要用戶文本的存儲,自然就遇到了emoji等表情符號如何被mysql DB支持的問題。下面這篇文章主要介紹了關(guān)于讓Java后臺MySQL數(shù)據(jù)庫能夠支持emoji表情的方法,需要的朋友可以參考下。2017-03-03

