这篇文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socke
t建立c/s连接;通过ObjectOutputStream,ObjectOutputStream 读写对象。唯一需要留意的是传递的java
对象需要实现Serializable标记接口。
服务端代码:
package com.yt.manager.Serializable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @Description:服务器端Socket
* @ClassName: Server
* @Project: base-info
* @Author: zxf
* @Date: 2011-7-15
*/
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
ObjectInputStream objInputStream = null;
ObjectOutputStream objOutputStream = null;
try {
serverSocket = new ServerSocket(11111);
System.out.println("Server服务已启动。。。。");
socket = serverSocket.accept();
// 对客户端使用 ObjectOutputStream 写入的对象进行反序列化
objInputStream = new ObjectInputStream(socket.getInputStream());
Customer cusotmer = (Customer) objInputStream.readObject();
cusotmer.setName("你好:" + cusotmer.getName());
objOutputStream = new ObjectOutputStream(socket.getOutputStream());
objOutputStream.writeObject(cusotmer);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
serverSocket.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
客户端代码:
package com.yt.manager.Serializable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @Description:服务器端Socket
* @ClassName: Server
* @Project: base-info
* @Author: zxf
* @Date: 2011-7-15
*/
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
ObjectInputStream objInputStream = null;
ObjectOutputStream objOutputStream = null;
try {
serverSocket = new ServerSocket(11111);
System.out.println("Server服务已启动。。。。");
socket = serverSocket.accept();
// 对客户端使用 ObjectOutputStream 写入的对象进行反序列化
objInputStream = new ObjectInputStream(socket.getInputStream());
Customer cusotmer = (Customer) objInputStream.readObject();
cusotmer.setName("你好:" + cusotmer.getName());
objOutputStream = new ObjectOutputStream(socket.getOutputStream());
objOutputStream.writeObject(cusotmer);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
serverSocket.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.yt.manager.Serializable;
import java.io.Serializable;
/**
* @Description:实现序列化接口
* @ClassName: Customer
* @Project: base-info
* @Author: zxf
* @Date: 2011-5-30
*/
public class Customer implements Serializable {
private static final long serialVersionUID = 1L;
public String name;
public int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
分享到:
相关推荐
所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
序列化和反序列化对象(将不长用的对象暂时持久化到文件中为对象的序列化,反之用时再把对象恢复到内存为反序列化); 控制对象的序列化和反序列化; 读jar包的资源文件;用zip格式压缩 和解压文件;操作Excel文件;...
学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器...
规则 4.3 防止序列化和反序列化被利用来绕过安全管理 规则 5.1 使用安全管理器来保护敏感操作 规则 5.2 防止特权区域内出现非法的数据 规则 5.3 禁止基于不信任的数据源做安全检查 规则 5.4 禁止特权块向非信任...
65. 什么是java序列化,如何实现java序列化? 48 65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 ...
13.6 对象序列化(object serialization) 199 13.6.1 ObjectInput与ObjectOutput 199 13.6.2 ObjectOutputStream 200 13.6.3 ObjectInputStream 200 13.7 巩固练习 201 第14章 线程 203 14.1 Runtime类...
76、什么是java序列化,如何实现java序列化? 18 77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName...
14 序列化和反序列化对象 7. 15 控制对象的序列化和反序列 7. 16 读jar包的资源文件 7. 17 用Zip格式压缩和解压缩文件 7. 18 操作Excel文件 7. 19 操作PDF文件 7. 20 自定义日志文件类 ...
java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义类加载器 什么是GC 内存泄漏和内存溢出 Java的内存模型(JVM的内存划分) JVM内存模型1.7和1.8的区别 如何判断一个对象是否是垃圾...
20.3.4 过滤流对象序列化类 20.3.5 过滤流打印类 20.4 小结 第21章 查找和替换项目(GUI+字符串处理) 21.1 查找和替换原理 21.1.1 项目结构框架分析 21.1.2 项目功能业务分析 21.2 查找和替换项目——利用AWT组件 ...
【基础】Java序列化与反序列化 27 为什么需要序列化与反序列化 28 如何实现Java序列化与反序列化 28 【基础】String s = new String("xyz");创建了几个字符串对象 30 【基础】接口是否可继承(extends)接口?抽象类...
76、什么是java序列化,如何实现java序列化? 18 77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName...
6.4.1 格式化操作符(%) 6.4.2 字符串模板c更简单的替代品 6.4.3 原始字符串操作符(rR) 6.4.4 Unicode字符串操作符(uU) 6.5 内建函数 6.5.1 标准类型函数 6.5.2 序列类型...
6.4.1 格式化操作符(%) 6.4.2 字符串模板: 更简单的替代品 6.4.3 原始字符串操作符(r/R) 6.4.4 Unicode字符串操作符(u/U) 6.5 内建函数 6.5.1 标准类型函数 6.5.2 序列类型...