`
AngelAndAngel
  • 浏览: 235518 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编程实现序列化的对象在网络上的传输

阅读更多
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 线程基础** 线程是程序执行的...

    对象序列化TCP传输

    1. **创建可序列化对象**:确保要传输的对象类实现了相应的序列化接口,如Java的`Serializable`或C#的`ISerializable`。 2. **序列化对象**:使用语言提供的序列化库(如Java的`ObjectOutputStream`,C#的`...

    java 对象的序列化与反序列化

    Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...

    序列化网络传输示例(tcp/ip)

    客户端代码会创建Socket,序列化对象并发送,而服务器端代码则会接收数据,反序列化并进行相应的处理。通过查看和分析这两个文件,我们可以更深入地了解如何在实际项目中应用序列化技术进行TCP/IP通信。 值得注意的...

    netty传输kryo序列化的对象基于socket传输

    具体实现时,我们可以在`ChannelHandlerContext.writeAndFlush()`方法中,先序列化对象为字节数组,然后构造包含报文头的完整数据包。在接收端,我们先读取报文头的4个字节,解码出数据体的长度,然后再读取相应长度...

    java对象序列化和反序列化

    Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...

    C#对象三种形式的序列化和反序列化

    在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始对象的过程。这在数据持久化、网络通信以及跨应用程序域共享数据时非常有用。本主题将详细探讨C#中的三种序列化方式:二进制...

    使用XStream序列化/反序列化对象

    // 序列化对象到XML字符串 String xml = xstream.toXML(person); System.out.println(xml); // 反序列化XML字符串回Person对象 Person deserializedPerson = (Person) xstream.fromXML(xml); // 检查反...

    java对象序列化.ppt

    在网络中传递对象,可以通过Socket编程实现,将序列化的对象作为数据流在网络中传输。客户端和服务器端分别使用`ObjectOutputStream`和`ObjectInputStream`进行读写。 自定义对象序列化,可以重写`writeObject()`和...

    java基础 对象序列化

    对象序列化是Java编程语言中的一项核心功能,旨在将对象的状态转换为字节流,以便于存储或在网络上传输。这一过程通常涉及将对象转换为二进制格式,以便能够持久化保存或跨越不同的计算环境进行通信。 序列化的主要...

    C#序列化与反序列化(包括复杂xml对象)

    在C#编程中,序列化和反序列化是两个关键的概念,它们主要用于对象状态的持久化和恢复。本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将...

    案例三:java网络编程(对象流传输)

    本案例将探讨如何通过Java进行对象流传输,实现网络上的对象共享。 首先,Java的对象流分为两种类型:ObjectInputStream和ObjectOutputStream。ObjectOutputStream用于将Java对象写入输出流,而ObjectInputStream则...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    此外,它们还提供了版本兼容性,允许在不同版本的代码之间序列化和反序列化对象。 在Windows Forms应用程序中,对象的序列化和反序列化常用于保存用户配置、游戏进度等信息。例如,你可以创建一个窗体的设置类,...

    C#对象序列化与反序列化

    XML序列化对象详解 - **说明**:XML序列化提供了一系列的特性来控制序列化的过程。 - **`[XmlElement]`**:默认情况下,使用此特性表示该成员将作为XML元素序列化。 - **`[XmlAttribute]`**:表示该成员将作为XML...

    Java对象的序列化和反序列化实践

    前者用于写入序列化对象,后者用于读取反序列化的对象。 **反序列化(Deserialization)** 1. **概念**:反序列化是将已序列化的字节流恢复为原来的Java对象的过程。 2. **过程**:通过`ObjectInputStream`的`...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    Java对象的序列化和反序列化是Java编程中的一项重要技术,主要应用于数据持久化、网络传输等场景。本课件详细介绍了这一概念及其在实际应用中的操作。 首先,序列化是将Java对象转化为字节序列的过程,目的是为了...

    c#对象序列化和反序列化,压缩流

    在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许我们将对象的状态转化为可存储或可传输的数据格式,例如XML、JSON或二进制,以便于保存、恢复或者在网络间传递。而“压缩流”则涉及到数据的压缩和解...

    反序列化作用

    a) 序列化对象时,需要确保对象类及其成员变量都是可序列化的,否则会抛出NotSerializableException异常。 b) 如果类中包含对象的引用,序列化时会递归地序列化所有引用的对象。 c) 在设计需要序列化的类时,应考虑...

    Socket通信之序列化对象通信

    在Java编程中,Socket通信是实现网络间进程通信的一种方式,而对象序列化则是将Java对象转换为字节流,以便在网络中传输或存储的重要技术。本教程将深入讲解如何结合Socket通信和对象序列化来实现在不同系统之间传递...

    对象的序列化和反序列化

    对象的序列化和反序列化是Java编程语言中重要的概念,它们主要用于持久化对象的状态,以便在需要时能够恢复。序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景...

Global site tag (gtag.js) - Google Analytics