2017-07-07 22 views
0

既知のデバイスのデータを送受信するためにobjectoutputstreamを使用していますが、ソケットのInputStreamに "String"ストリームの他の要求がある可能性があります。着信要求のデータ型を検出

受信ストリームをObjectInputStreamで処理できるか、通常のbufferedreader/inputreaderで赤くする必要があるかどうかを検出する最適な方法は何ですか?

ありがとうございました!

+1

受信メッセージを推測しません。あなたは非常によくプロトコルを持って来て、入っている可能なタイプを推測するためにこの方法をやめてください。 –

+0

うまく定義されたプロトコルで動作しています。同じip/portでは、サーバによって処理される必要のある2つの異なるタイプのリクエスト(ストリングストリームまたはオブジェクトストリームのいずれか)が可能です。 – edi

+2

よく定義されていません。それを明確にする1つの解決策は、実際のデータを送信する前に1つのフラグを送信することです(例えば、0はオブジェクトを意味し、1は0とします)。私はあなたがあまりにも多くのJavaものを取り除くことを提案し、JSON/XMLのようなより一般的なものをjavaオブジェクトマーシャリングに渡すと、javaが利用できないときには、異なるプラットフォームで複数のクライアントを持つのに役立ちます。 –

答えて

0

objectoutputsteamでオブジェクトとして文字列を送信し、反対側でinstanceofを使用して文字列であるかどうかを確認できます。そうでない場合は、instanceofを使用してオブジェクトが送信されたクラスを確認できます。適切なクラスを見つけたら、そのクラスにオブジェクトをキャストしなければなりません。

関連する問題