Serialization and deserialization in Java network programming are used to safely transmit objects over the network and involve the following steps: Serialization: Converting an object into a sequence of bytes for transmission or storage. Deserialization: Convert a sequence of bytes back into an object. This allows objects to be transferred between different JVMs without worrying about data type mismatches or platform differences.
Serialization and Deserialization in Java Network Programming
Preface
In Java network programming, serialization and deserialization are the processes of converting objects to byte streams and reconstructing objects from byte streams. This is important for securely transmitting data over the network, as it allows you to send objects from one JVM to another without worrying about data type mismatches or platform differences.
Serialization
Serialization is the process of converting an object into a sequence of bytes so that it can be transmitted or stored over a network. Java provides the java.io.Serializable
interface, which defines the writeObject()
and readObject()
methods, allowing objects to implement their own serialization/reverse Serialization mechanism. The following is a code example for serializing an object:
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(); } } }
Deserialization
Deserialization is the reverse process of converting a sequence of bytes back into an object. The following is a code example of deserializing an object:
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(); } } }
Practice case
A common practice case is to use serialization to transfer objects between the client and the server . Here is a simplified example:
Client code:
// 创建一个要发送到服务器的对象 Message message = new Message("Hello from client!"); // 将对象序列化并发送到服务器 ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream()); out.writeObject(message);
Server code:
// 从客户端接收序列化对象 ObjectInputStream in = new ObjectInputStream(socket.getInputStream()); Message receivedMessage = (Message) in.readObject(); // 处理接收到的对象 System.out.println("收到来自客户端的消息:" + receivedMessage.getText());
NOTE :
Serializable
interface can be serialized and deserialized. The above is the detailed content of How does Java network programming use serialization and deserialization for data transmission?. For more information, please follow other related articles on the PHP Chinese website!