簡體   English   中英

Java如何確定進入UDP服務器的數據類型? XML二進制文件

[英]Java How to determine Type of data coming into UDP server? XML Binary

我有一個UDP服務器監聽。 客戶端可以發送二進制數據或XML數據(二進制表示為xml,以便快速攻擊)。 確定數據類型的適當方法是什么?

在此輸入圖像描述

您需要一段元數據( 標記標題 )來區分這兩者。 一點就夠了。 更高級別的協議使用更詳細的標頭來區分不同的類型,例如在HTTP中:

Content-Type: application/xml

當然在你的情況下,因為UDP包很小而且很輕,所以假設第一個字節是類型鑒別器。 0 - XML, 1 - 二進制。

不要試圖通過檢查來猜測內容類型。 XML文檔和二進制文檔與統計學的觀點非常不同,但它只是繁瑣且容易出錯。 另外,我不建議嘗試將傳入的數據解析為XML,如果失敗則將其視為二進制。

下載JDOM並將其添加到客戶端的類路徑中。 在傳入的數據上實例化SAXBuilder並嘗試從中構建XML文檔。 如果失敗,那就是你的二進制數據。

...
SAXBuilder builder = new SAXBuilder();
try {
   builder.build(/*data*/);
   // You have XML data
} catch (Exception e) {
   // You have binary data
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM