2
我必須實現現有二進制協議的高性能Java客戶端。我將使用Netty。然而,由於協議是複雜的(許多字段有很多消息類型),我想從解析代碼中分離出netty代碼,並從更高層抽象中的文檔描述該協議的文檔生成此協議的解析器。類似於Google協議緩衝區所做的那樣。不幸的是,似乎我不能使用protobuf,因爲我的協議採用不同的二進制線格式。有什麼建議麼?爲Java中的現有二進制協議生成解析器
我必須實現現有二進制協議的高性能Java客戶端。我將使用Netty。然而,由於協議是複雜的(許多字段有很多消息類型),我想從解析代碼中分離出netty代碼,並從更高層抽象中的文檔描述該協議的文檔生成此協議的解析器。類似於Google協議緩衝區所做的那樣。不幸的是,似乎我不能使用protobuf,因爲我的協議採用不同的二進制線格式。有什麼建議麼?爲Java中的現有二進制協議生成解析器
我還沒有嘗試過自己,但我想你可能會尋找the java binary block parser
下面是一個例子,形成正式的自述,顯示它如何可以用於使用高解析TCP頭的結構級別的DSL:
final JBBPParser tcpParser = JBBPParser.prepare(
"skip:34; // skip bytes till the frame\n"
+ "ushort SourcePort;"
+ "ushort DestinationPort;"
+ "int SequenceNumber;"
+ "int AcknowledgementNumber;"
+ "bit:1 NONCE;"
+ "bit:3 RESERVED;"
+ "bit:4 HLEN;"
+ "bit:1 FIN;"
+ "bit:1 SYN;"
+ "bit:1 RST;"
+ "bit:1 PSH;"
+ "bit:1 ACK;"
+ "bit:1 URG;"
+ "bit:1 ECNECHO;"
+ "bit:1 CWR;"
+ "ushort WindowSize;"
+ "ushort TCPCheckSum;"
+ "ushort UrgentPointer;"
+ "byte [$$-34-HLEN*4] Option;"
+ "byte [_] Data;"
);
final JBBPFieldStruct result = pngParser.parse(tcpFrameStream);
是的!謝謝麥芽,看起來像我正在尋找的圖書館。 –