Java ネットワーク プログラミングでは、データ送信にシリアル化と逆シリアル化をどのように使用しますか?

WBOY
リリース: 2024-04-16 09:48:01
オリジナル
798 人が閲覧しました

Java ネットワーク プログラミングにおけるシリアル化と逆シリアル化は、ネットワーク上でオブジェクトを安全に送信するために使用され、次の手順が含まれます。 シリアル化: オブジェクトを送信または保存するためにバイトのシーケンスに変換します。逆シリアル化: 一連のバイトをオブジェクトに変換して戻します。これにより、データ型の不一致やプラットフォームの違いを気にせずに、異なる JVM 間でオブジェクトを転送できるようになります。

Java ネットワーク プログラミングでは、データ送信にシリアル化と逆シリアル化をどのように使用しますか?

#Java ネットワーク プログラミングにおけるシリアライゼーションとデシリアライゼーション

序文

Java ネットワークにおけるプログラミング、シリアル化、および逆シリアル化は、オブジェクトをバイト ストリームに変換し、バイト ストリームからオブジェクトを再構築するプロセスです。これは、データ型の不一致やプラットフォームの違いを気にせずに、ある JVM から別の JVM にオブジェクトを送信できるため、ネットワーク上でデータを安全に送信するために重要です。

シリアル化

シリアル化は、ネットワーク上で送信または保存できるように、オブジェクトをバイトのシーケンスに変換するプロセスです。 Java は

java.io.Serializable インターフェイスを提供します。これは writeObject() メソッドと readObject() メソッドを定義し、オブジェクトが独自のシリアル化/逆シリアル化を実装できるようにします。機構。以下は、オブジェクトをシリアル化するコード例です。

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializeExample {

    public static void main(String[] args) {
        try {
            // 创建一个要序列化的对象
            Employee employee = new Employee(1, "John Doe", "Manager");

            // 创建一个文件输出流
            FileOutputStream fileOut = new FileOutputStream("employee.ser");

            // 创建一个对象输出流
            ObjectOutputStream out = new ObjectOutputStream(fileOut);

            // 将对象序列化到输出流中
            out.writeObject(employee);

            // 关闭输出流
            out.close();

            System.out.println("对象已序列化到 employee.ser");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ログイン後にコピー

逆シリアル化

逆シリアル化は、バイト シーケンスをオブジェクトに変換する逆のプロセスです。以下は、オブジェクトを逆シリアル化するコード例です。

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class DeserializeExample {

    public static void main(String[] args) {
        try {
            // 创建一个文件输入流
            FileInputStream fileIn = new FileInputStream("employee.ser");

            // 创建一个对象输入流
            ObjectInputStream in = new ObjectInputStream(fileIn);

            // 从输入流中反序列化对象
            Employee employee = (Employee) in.readObject();

            // 关闭输入流
            in.close();

            System.out.println("对象已反序列化:");
            System.out.println(employee);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
ログイン後にコピー

実践事例

一般的な実践事例は、シリアル化を使用してクライアントとサーバーの間でオブジェクトを転送することです。簡略化した例を次に示します。

クライアント コード:

// 创建一个要发送到服务器的对象
Message message = new Message("Hello from client!");

// 将对象序列化并发送到服务器
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
out.writeObject(message);
ログイン後にコピー

サーバー コード:

// 从客户端接收序列化对象
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Message receivedMessage = (Message) in.readObject();

// 处理接收到的对象
System.out.println("收到来自客户端的消息:" + receivedMessage.getText());
ログイン後にコピー

注 :

    #Serializable
  • インターフェイスを実装するオブジェクトのみをシリアル化および逆シリアル化できます。 シリアル化されたデータにはオブジェクトのクラス情報が含まれるため、逆シリアル化の際にも同じクラス定義が必要です。
  • シリアル化と逆シリアル化のプロセスは時間がかかる可能性があるため、アプリケーションを設計する際には慎重に検討する必要があります。

以上がJava ネットワーク プログラミングでは、データ送信にシリアル化と逆シリアル化をどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート