0

私はTCPソケットを使用しており、Javaとソケットの初心者でもあります。シナリオでは、クライアントは、サーバーの応答に応じて、intまたはstringのいずれかを送信できます。クライアントの出力ストリームをサーバー側の変数に保存する必要があるので、ifステートメントなどで使用できます。しかし、送信されるストリームが整数か文字列かわからない場合、どうすればこれを行うことができますか?

私のコードは巨大で乱雑であり、それをもっと複雑にしたくないので、私は非常に単純な例を作成しました

クライアント側:

serverSentence=inFromServer.readLine();   
if (serverSentence.equals("Hello"))
     {
     anInt=readUserInput.nextInt(); 
     outToServer.write(anInt);
     }
else 
     {
     outToServer.writeBytes("Hello word!"+'\n');
     }

では、どうすればこれを実行できるのでしょうか。つまり、サーバー側(またはオポサイト)のクライアントの出力ストリームを変数に保存して、ループやifで使用できるようにするということです。

4

2 に答える 2

1

を使用しObjectます。として入力された参照は、またはObjectを参照できます。もちろん、別の話は、着信データをどちらかとして逆シリアル化することです。問題がシリアル化されたデータの解釈方法がわからないことに関係している場合は、データが何であるかを示す何らかのフラグを含めます。IntegerString

于 2012-10-18T20:05:19.580 に答える
0

サーバーがいくつかの情報を読み取れるように(標準ヘッダーと呼ぶことができます)、サーバーとクライアント間の通信プロトコルを設計する必要があります。それに基づいて、クライアントから送信された残りのバイトを解釈する方法がわかります。

そして、クライアントからデータを読み取る方法と、それをどこに保存するかがわかります。

于 2012-10-18T20:09:32.213 に答える