0

UDPサーバーがリッスンしています。クライアントは、バイナリデータまたはXMLデータ(攻撃が早い人のためにバイナリはxmlとして表されます)のいずれかを送信できます。入ってくるデータ型を決定する適切な方法は何ですか?

ここに画像の説明を入力してください

4

2 に答える 2

1

2つを区別するには、メタデータ(フラグヘッダー)が必要です。1ビットで十分です。より高いレベルのプロトコルは、より詳細なヘッダーを使用して、異なるタイプを区別します。たとえば、HTTPの場合:

Content-Type: application/xml

もちろん、あなたの場合、UDPパッケージは小さくて軽量なので、最初のバイトが型判別器であると想定してください。0-XML、1-バイナリ。

コンテンツタイプを調べて推測しようとしないでください。XMLドキュメントとバイナリドキュメントは統計的な観点からは大きく異なりますが、面倒でエラーが発生しやすいだけです。また、受信データをXMLとして解析し、失敗した場合はバイナリとして扱うことお勧めしません。

于 2013-01-10T19:38:21.803 に答える
1

JDOMをダウンロードして、クライアントのクラスパスに追加します。受信データでをインスタンス化し、SAXBuilderそこからXMLドキュメントを作成してみます。それが失敗した場合、それはあなたが持っているバイナリデータです。

...
SAXBuilder builder = new SAXBuilder();
try {
   builder.build(/*data*/);
   // You have XML data
} catch (Exception e) {
   // You have binary data
}
于 2013-01-10T19:40:52.117 に答える