1

接続ごとに新しいスレッドを作成する単純な newtworking プロジェクトの作業を開始しましたが、複数のものを送信しようとしています。私が疑問に思っているのは、その変数全体をサーバーに送信し、それを他のクライアントに送信する変数を簡単に宣言する簡単な方法があることです。たとえば、単純な整数配列を送信したい場合はどうなりますか? 基本的に、ソケットを介して配列や画像を送信するにはどうすればよいですか?

4

1 に答える 1

2

はい、可能です。探しているものはシリアル化と呼ばれ、ストリーム (ソケット、ファイルなど) を介してオブジェクト全体を送信するために使用できます。この Java ソケットのシリアライゼーション チュートリアル をご覧ください。

ObjectOutpuStreamObjectInputStreamのドキュメントを確認してください。

基本的にあなたがしなければならないことは、シリアル化したいカスタムタイプにSerializableインターフェースを実装させることです:

class MyCustomType implements Serializable {
    ...
}

これは、この型をストリーム経由で送信できることをランタイムに伝えるマーカー インターフェイスです。

次に、接続がセットアップされたら、ソケットの入出力ストリームを取得し、以下を使用してオブジェクトを書き込むことができますObjectOutputStream

MyCustomType obj = new MyCustomType(); 
ObjectOutputStream oos = new ObjectOutputStream(client.getOutputStream());
oos.writeObject(obj);
oos.flush();

または次を使用してそれらを読み取りますObjectInputStream

ObjectInputStream ois = new ObjectInputStream(client.getOutputStream());
MyCustomType obj = (MyCustomType) ois.readObject();

(client上記はSocket)。

于 2012-07-08T15:22:32.010 に答える