2016-06-22 13 views
2

既存のバイナリプロトコルの高性能Javaクライアントを実装する必要があります。私はNettyを使用します。しかし、プロトコルは複雑で(フィールドが多い多くのメッセージタイプ)、私はコードを解析することからネットコードを分離し、より高い抽象化でこのプロトコルを記述する文書からこのプロトコルのパーサーを生成したいと思っています。 Googleのプロトコルバッファでも同様です。残念ながら、プロトコルが異なるバイナリ形式であるため、protobufを使用することはできません。助言がありますか?Javaで既存のバイナリプロトコルのパーサを生成する

答えて

2

ここでは、高を使用してTCPヘッダの構造を解析するために使用する方法を示し公式のreadmeを形成する例を示します、私はそれを自分で試していませんが、私はあなたがthe java binary block parser

を探しているかもしれないと思いますレベルの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); 
+0

はい!あなたが探している図書館のように見えるモルトありがとうございます。 –

関連する問題