ホームページ >Java >&#&チュートリアル >ソケット通信のために Java オブジェクトをシリアル化および逆シリアル化するにはどうすればよいですか?

ソケット通信のために Java オブジェクトをシリアル化および逆シリアル化するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 11:28:14426ブラウズ

How Can I Serialize and Deserialize Java Objects for Socket Communication?

ソケット送信のために Java オブジェクトをバイト配列にシリアル化する

問題:

シリアル化可能なクラスが AppMessage と呼ばれるシナリオを考えてみましょう。ソケット経由で別のマシンに送信し、受信したバイトから再構築する必要があります。目的は、Java でこの目的を達成する手法を探ることです。

解決策:

送信用のバイト配列を準備するには、serialize メソッドを利用します:

static byte[] serialize(final Object obj) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
        out.writeObject(obj);
        out.flush();
        return bos.toByteArray();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}

逆に、バイト配列からオブジェクトを再作成するには、デシリアライズを使用します。メソッド:

static Object deserialize(byte[] bytes) {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);

    try (ObjectInput in = new ObjectInputStream(bis)) {
        return in.readObject();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}

これらのメソッドにより、Java オブジェクトの効率的なシリアル化と逆シリアル化が可能になり、受信側マシンでの再構築のためにソケット経由での送信が容易になります。

以上がソケット通信のために Java オブジェクトをシリアル化および逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。