[英]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.