`

通过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;
	}

}
 

 

分享到:
评论

相关推荐

    Socket通信之序列化对象通信

    服务器接收并反序列化这个字节流,恢复出Student对象,从而完成了一次基于Socket的序列化对象通信。 总结,Socket通信结合对象序列化提供了一种有效的方式,让网络上的不同系统可以共享和交换自定义的Java对象。这...

    java对象序列化.ppt

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

    使用Socket传递对象

    Java序列化是将对象转换为字节流的过程,以便于存储或在网络上传输。要使一个类可序列化,你需要在类定义上实现`Serializable`接口。例如: ```java public class MyObject implements Serializable { // 类的属性...

    Java对象序列化使用基础

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

    java客户端服务器传递对象

    "java客户端服务器传递对象"这个主题涉及到的核心知识点主要包括Java RMI(Remote Method Invocation,远程方法调用)、对象序列化以及网络通信的基本原理。下面我们将深入探讨这些概念。 1. **Java RMI**: RMI是...

    socket objectoutputstream 传对象 例子

    而ObjectOutputStream则是一个序列化流,用于将Java对象转换为字节流,以便通过网络传输。 首先,我们来理解Socket。Socket是Java的java.net包中的类,它主要用于网络编程,创建TCP连接。当你想要在一个应用程序中...

    Javas_socket传递JavaBean(案例)

    Java序列化是将对象转换为字节流的过程,以便在网络中传输或持久化存储。要使一个类可序列化,需要实现`java.io.Serializable`接口。例如,如果我们有一个名为`MyBean`的JavaBean: ```java public class MyBean ...

    java 与C语言使用socket通信传递结构体数据

    总之,Java与C语言通过Socket通信传递结构体数据,需要在两者之间建立共同的数据表示方式,并实现相应的序列化和反序列化策略。这通常涉及到对网络协议、数据编码和解码的深入了解。在实际开发中,选择合适的序列化...

    Java序列化技术的探讨.pdf

    本文将介绍几种常用的Java序列化技术,并通过比较、分析这些技术在功能、序列化后的字节数和序列化、反序列化速度方面的差异,得出了在什么应用环境下应该如何选择序列化技术框架。 对象序列化概述 对象序列化是一...

    Java中使用Socket发送Java对象实例

    因此,我们需要使用对象流(Object Stream)来序列化和反序列化对象,以便在网络间传递。 1. **序列化与反序列化**: 在Java中,为了让一个对象能够被序列化,该类必须实现`java.io.Serializable`接口。例如,我们...

    对象序列化TCP传输

    4. **发送序列化对象**:通过已建立的TCP连接,将序列化后的字节流写入Socket的输出流。 5. **接收和反序列化**:在另一端,从Socket的输入流读取字节流,然后使用相应的反序列化方法恢复为对象。 6. **关闭连接**...

    Java序列化(Serializable)与反序列化__1.docx

    Java序列化(Serializable)是Java平台提供的一种持久化机制,允许将对象的状态转换为字节流,以便存储到磁盘、数据库中,或者在网络上传输。这一过程被称为对象的序列化。反之,将字节流恢复为原来的对象状态称为反...

    03-03-02-序列化和反序列化1

    2. 序列化对象:使用`ObjectOutputStream`的`writeObject()`方法将对象写入输出流。 3. 反序列化对象:使用`ObjectInputStream`的`readObject()`方法从输入流中读取对象。 在Java中,序列化不仅涉及对象的属性,还...

    java socket通信自定义消息协议

    序列化是将Java对象转化为字节数组的过程,反序列化则是相反的操作。 在实际应用中,为了提高效率和健壮性,还需要考虑错误处理、多线程、网络异常等问题。例如,设置超时时间防止死锁,使用BufferedReader或...

    qt与java之间socket通讯

    总结,Qt与Java之间的Socket通信涉及了网络编程、JSON序列化和反序列化、多线程处理(特别是在Java中处理并发连接时)、以及错误处理等多个技术点。理解并熟练掌握这些知识点,可以构建可靠的跨平台通信系统。

    Java使用传统socket手写的远程RPC框架调用框架

    4. **序列化与反序列化**:在网络通信中,对象需要被转换为可传输的字节流,这个过程就是序列化。Java提供了多种序列化方式,如Java内置的序列化(implements Serializable)、protobuf、JSON等。在RPC框架中,我们...

    Android-byte数据序列化成对象对象转化成二进制数据

    在Android开发中,数据交换和存储常常涉及到对象的序列化和反序列化。这是一个关键的环节,特别是当数据需要通过网络(如Socket)或者蓝牙进行传输时,因为这些通信方式通常要求以二进制格式传输数据。本篇将详细...

    java多组播中传递对象

    - 创建一个发送类,负责序列化对象并将其放入`DatagramPacket`,然后通过`MulticastSocket`发送。 - 创建一个接收类,持续监听多组播组,接收到数据包后反序列化对象。 6. **安全性与性能**: - 序列化可能带来...

Global site tag (gtag.js) - Google Analytics