首頁 >Java >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 中實現此目標的技術。

解決方案:

要準備用於傳輸的位元組數組,請使用序列化方法:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn