簡體   English   中英

用Java解析網絡數據包的文本文件

[英]Parsing a text file of network packets in Java

我很難用Java解析此.dat文件。 我嘗試解析的.dat文件的格式如下所示。 這些實際上是我正在處理的數據包生成器程序的數據包。 每個數據包在每個塊之間用新行來描繪。 我希望將數據包中的每個字節存儲在單個字節[]中。 我一直在使用BufferedReader readline()方法逐行執行,但在存儲整個數據包方面仍然沒有成功。 在此先感謝您提供的任何幫助。

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 30 08 0d 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fd 00 00 00 00 70 02 
fa f0 2b d7 00 00 02 04 05 b4 01 01 04 02 

00 01 03 cd 50 3c 00 01 03 dd 4c 2d 08 00 45 00 
00 30 00 00 40 00 40 06 e1 37 c0 a8 ec 1e c0 a8 
ec 20 00 50 04 16 e9 bb 68 bf b8 63 45 fe 70 12 
16 d0 bd 6b 00 00 02 04 05 b4 01 01 04 02 

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 28 08 0f 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fe e9 bb 68 c0 50 10 
fa f0 59 ab 00 00 

00 04 75 8d 49 c7 00 01 03 cd 50 3c 08 00 45 00 
00 ed 08 10 40 00 80 06 00 00 c0 a8 ec 20 c0 a8 
ec 1e 04 16 00 50 b8 63 45 fe e9 bb 68 c0 50 18 
fa f0 5a 70 00 00 47 45 54 20 2f 20 48 54 54 50 
2f 31 2e 31 0d 0a 41 63 63 65 70 74 3a 20 2a 2f 
2a 0d 0a 41 63 63 65 70 74 2d 4c 61 6e 67 75 61 
67 65 3a 20 65 6e 2d 75 73 0d 0a 41 63 63 65 70 
74 2d 45 6e 63 6f 64 69 6e 67 3a 20 67 7a 69 70 
2c 20 64 65 66 6c 61 74 65 0d 0a 55 73 65 72 2d 
41 67 65 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 34 
2e 30 20 28 63 6f 6d 70 61 74 69 62 6c 65 3b 20 
4d 53 49 45 20 36 2e 30 3b 20 57 69 6e 64 6f 77 
73 20 4e 54 20 35 2e 30 29 0d 0a 48 6f 73 74 3a 
20 31 39 32 2e 31 36 38 2e 32 33 36 2e 33 30 0d 
0a 43 6f 6e 6e 65 63 74 69 6f 6e 3a 20 4b 65 65 
70 2d 41 6c 69 76 65 0d 0a 0d 0a 

數組是固定長度的,看起來您不知道要擁有多少字節,直到您擊中空白行,而且您也不知道要擁有多少個總數據包。

我建議使用ArrayList<ArrayList<Byte>>來保存所有數據包-這將根據需要增長。

創建一個初始ArrayList<Byte>然后是一個簡單的循環:

  • 雖然readline()不為null
  • 檢查空白行
  • 如果不是空白
    • 使用String.split()String解析為String[]
    • 遍歷String[]並將每個十六進制對轉換為一個byte然后添加到ArrayList<Btye>
  • 如果空白
    • ArrayList<Byte>添加到ArrayList<ArrayList<Byte>>
    • 創建新的ArrayList<Byte>

readline()返回null ,循環退出,並且ArrayList<ArrayList<Byte>>包含所有數據包。

暫無
暫無

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

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