package com.softeem.demo;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
class Student implements Serializable {
private int sno;
private String sname;
public Student(int sno, String sname) {
this.sno = sno;
this.sname = sname;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "学号:" + sno + ";姓名:" + sname;
}
}
class MyClient extends Thread {
@Override
public void run() {
try {
Socket s = new Socket("localhost", 9999);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Student stu = (Student) ois.readObject();
System.out.println("客户端程序收到服务器端程序传输过来的学生对象>> " + stu);
ois.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyServer extends Thread {
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
ObjectOutputStream ops = new ObjectOutputStream(s.getOutputStream());
Student stu = new Student(1, "赵本山");
ops.writeObject(stu);
ops.close();
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class TestTransfer {
public static void main(String[] args) {
new MyServer().start();
new MyClient().start();
}
}
分享到:
相关推荐
对于对象的传输,通常会在Socket的基础上构建更高层次的流(如`ObjectInputStream`和`ObjectOutputStream`),用于对象的序列化和反序列化。 #### 三、线程:并发执行的基石 **3.1 线程基础** 线程是程序执行的...
1. **创建可序列化对象**:确保要传输的对象类实现了相应的序列化接口,如Java的`Serializable`或C#的`ISerializable`。 2. **序列化对象**:使用语言提供的序列化库(如Java的`ObjectOutputStream`,C#的`...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
客户端代码会创建Socket,序列化对象并发送,而服务器端代码则会接收数据,反序列化并进行相应的处理。通过查看和分析这两个文件,我们可以更深入地了解如何在实际项目中应用序列化技术进行TCP/IP通信。 值得注意的...
具体实现时,我们可以在`ChannelHandlerContext.writeAndFlush()`方法中,先序列化对象为字节数组,然后构造包含报文头的完整数据包。在接收端,我们先读取报文头的4个字节,解码出数据体的长度,然后再读取相应长度...
Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...
在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...
在网络中传递对象,可以通过Socket编程实现,将序列化的对象作为数据流在网络中传输。客户端和服务器端分别使用`ObjectOutputStream`和`ObjectInputStream`进行读写。 自定义对象序列化,可以重写`writeObject()`和...
在C#编程中,序列化和反序列化是两个关键的概念,它们主要用于对象状态的持久化和恢复。本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将...
本案例将探讨如何通过Java进行对象流传输,实现网络上的对象共享。 首先,Java的对象流分为两种类型:ObjectInputStream和ObjectOutputStream。ObjectOutputStream用于将Java对象写入输出流,而ObjectInputStream则...
此外,它们还提供了版本兼容性,允许在不同版本的代码之间序列化和反序列化对象。 在Windows Forms应用程序中,对象的序列化和反序列化常用于保存用户配置、游戏进度等信息。例如,你可以创建一个窗体的设置类,...
XML序列化对象详解 - **说明**:XML序列化提供了一系列的特性来控制序列化的过程。 - **`[XmlElement]`**:默认情况下,使用此特性表示该成员将作为XML元素序列化。 - **`[XmlAttribute]`**:表示该成员将作为XML...
前者用于写入序列化对象,后者用于读取反序列化的对象。 **反序列化(Deserialization)** 1. **概念**:反序列化是将已序列化的字节流恢复为原来的Java对象的过程。 2. **过程**:通过`ObjectInputStream`的`...
Java对象的序列化和反序列化是Java编程中的一项重要技术,主要应用于数据持久化、网络传输等场景。本课件详细介绍了这一概念及其在实际应用中的操作。 首先,序列化是将Java对象转化为字节序列的过程,目的是为了...
在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转化为可存储或可传输的数据格式,例如XML、JSON或二进制,以便于保存、恢复或者在网络间传递。而“压缩流”则涉及到数据的压缩和解...
a) 序列化对象时,需要确保对象类及其成员变量都是可序列化的,否则会抛出NotSerializableException异常。 b) 如果类中包含对象的引用,序列化时会递归地序列化所有引用的对象。 c) 在设计需要序列化的类时,应考虑...
在Java编程中,Socket通信是实现网络间进程通信的一种方式,而对象序列化则是将Java对象转换为字节流,以便在网络中传输或存储的重要技术。本教程将深入讲解如何结合Socket通信和对象序列化来实现在不同系统之间传递...
对象的序列化和反序列化是Java编程语言中重要的概念,它们主要用于持久化对象的状态,以便在需要时能够恢复。序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景...
在Java编程语言中,对象流(也称为序列化)是一个重要的概念,它允许我们将Java对象转换为字节流,以便可以存储在磁盘上、通过网络传输或保存在持久性存储中。序列化是Java平台的标准特性,由java.io.Serializable...