`

通过socket传递java对象(对象序列化)

 
阅读更多

这篇文章主要实现的是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;
	}

}
 

 

分享到:
评论

相关推荐

    Java对象序列化使用基础

    所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。

    java jdk实列宝典 光盘源代码

    序列化和反序列化对象(将不长用的对象暂时持久化到文件中为对象的序列化,反之用时再把对象恢复到内存为反序列化); 控制对象的序列化和反序列化; 读jar包的资源文件;用zip格式压缩 和解压文件;操作Excel文件;...

    疯狂JAVA讲义

    学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 141 5.5.2 构造器的重载 142 学生提问:为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器...

    华为 java 安全 编码 规范 安全篇 2.0

    规则 4.3 防止序列化和反序列化被利用来绕过安全管理 规则 5.1 使用安全管理器来保护敏感操作 规则 5.2 防止特权区域内出现非法的数据 规则 5.3 禁止基于不信任的数据源做安全检查 规则 5.4 禁止特权块向非信任...

    java面试题

    65. 什么是java序列化,如何实现java序列化? 48 65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 ...

    java编程基础,应用与实例

    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类...

    java面试宝典

    76、什么是java序列化,如何实现java序列化? 18 77、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 18 78、abstract class Name { private String name; public abstract boolean isStupidName...

    Java JDK实例宝典

    14 序列化和反序列化对象 7. 15 控制对象的序列化和反序列 7. 16 读jar包的资源文件 7. 17 用Zip格式压缩和解压缩文件 7. 18 操作Excel文件 7. 19 操作PDF文件 7. 20 自定义日志文件类 ...

    涵盖了90%以上的面试题

    java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义类加载器 什么是GC 内存泄漏和内存溢出 Java的内存模型(JVM的内存划分) JVM内存模型1.7和1.8的区别 如何判断一个对象是否是垃圾...

    Java典型模块

    20.3.4 过滤流对象序列化类 20.3.5 过滤流打印类 20.4 小结 第21章 查找和替换项目(GUI+字符串处理) 21.1 查找和替换原理 21.1.1 项目结构框架分析 21.1.2 项目功能业务分析 21.2 查找和替换项目——利用AWT组件 ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】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...

    Python核心编程第二版(ok)

     6.4.1 格式化操作符(%)   6.4.2 字符串模板c更简单的替代品   6.4.3 原始字符串操作符(rR)   6.4.4 Unicode字符串操作符(uU)   6.5 内建函数   6.5.1 标准类型函数   6.5.2 序列类型...

    Python核心编程第二版

     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 序列类型...

Global site tag (gtag.js) - Google Analytics