1

2 つの Java プログラムを作成しようとしています。1 つはサーバーをシミュレートし、もう 1 つはクライアントをシミュレートします。

ソケットを介して Response クラスのインスタンスを送信するにはどうすればよいですか?

Response クラスは、サーバー接続のステータス コードを表します。例: 404 Not Found など

残念ながら、シリアライゼーションの使用は許可されていません。

アドバイスをいただければ幸いです。

4

2 に答える 2

3

接続を介してオブジェクトを送信するには、あるレベルでシリアライゼーションが発生する必要があります。シリアライゼーションの使用が許可されていないというあなたのコメントは、シリアライゼーションの全面的な禁止ではなく、Serializable を使用できないことを指しているとしか思えません (これは意味がありません)。これを実現するための非常に簡単な方法は、gsonなどの外部シリアライゼーション ライブラリを使用することです。Gson は、ソケットを介して送信できる JSON 文字列にオブジェクトをシリアル化し、同じライブラリを使用して反対側のオブジェクトに逆シリアル化します。もちろん、お気に入りのシリアル化ライブラリをお気に入りの形式で使用できます。XML、json、YAML、...

于 2013-03-22T15:44:32.410 に答える
1

Responseクラス自体のインスタンスを送信することはありません。ネットワークを介して物事を送信する場合、クライアントマシンとサーバーマシンはバイトを理解します。アプリケーションはバイト以上を理解でき、特定の表現を理解できます。たとえば、サーバーがResponseクラスのJSON表現を次のように送信する場合があります。

{
   "response" : {
       "code":404
   }
}

次に、クライアントはこのバイトシーケンスの意味を理解できる必要があります。これが基本的にプロトコルとは何か、つまり2台のマシンが通信する方法です。

サーバーまたはクライアントが記述されている言語に関係なく、応答はエンティティです。JavaではClassそれを表すためにを使用するかもしれませんが、C++では。を使用するかもしれませんstruct。ただし、外部のapplication.systemと通信する場合は、json、xmlなど、誰もが理解できる形式にする必要があることを両方とも知っておく必要があります。

ソケットを介してこれを送信することに関しては、Oracleにはここに素晴らしいチュートリアルがあります。OutputStream ソケットからを取得し、表現の記述を開始します。

于 2013-03-22T15:42:55.657 に答える