2017-01-13 5 views
1

クライアントからStringsを受け取ることができるJAVAとNettyを使用してTCPソケットを実装しました。 今私は、XMLベースの文字列を受け入れる必要があり、どんな種類の区切り文字を使うことができるのかよく分かりません。現時点では、私は次の実装を持っています。Netty - XML文字列のデリミタ

pipeline.addLast(new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter())); 

このようにして、XMLは行単位で読み込まれます。これは明白です。今、NettyにXML文字列全体を読み込ませるように指示する方法はありますか?何らかのxmlDelimiterを探しています。 誰かが私を助けてくれますか?

ありがとう

答えて

0

これは、送信者と受信者の両方が同意する必要があるプロトコルの問題です。実生活の例はNETCONF(ネットワークデバイスの設定に使用)の例です。 NETCONFはプロトコル操作とデータエンコーディングの両方にXMLを使用し、個々のXMLメッセージを区切るためのメカニズムが必要でした。仕様の最初のバージョンでは、文字列]]>]]>が区切り文字として定義されていました。 XMLメッセージのシーケンスがそうのようなlookeできます

<rpc message-id="1"> ... </rpc> 
]]>]]> 
<rpc message-id="2"> ... </rpc> 
]]>]]> 

それは後でこの文字列が合法的にエンコードされた長さに基づいて仕様の新しいバージョンが全く異なるフレーミングメカニズムを定義し、なぜXML属性やコメント、中に存在する可能性があることを実現しましたHTTPチャンク機構によく似ています。

クライアントを管理しているものがあれば、元のNETCONFソリューションのような単純な区切り文字ベースのアプローチがうまくいくはずです。

関連する問題