`
holoblog
  • 浏览: 1264346 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:19541
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

这篇文章主要实现的是j:通过socket传递Java对象。采用的方法就是对象序列化。方法是:通过socket建立c/s连接;通过ObjectOutputStream,ObjectOutputStream 读写对象。唯一需要留意的是传递的java 对象需要实现Serializable标记接口。代码包括:java对象类,Employee; socket client类;server类。主要代码如下:

java对象类:

import java.io.*;
import java.util.*;

public class Employee implements Serializable {

private int employeeNumber;
private String employeeName;

Employee(int num, String name) {
employeeNumber = num;
employeeName= name;
}

public int getEmployeeNumber() {
return employeeNumber ;
}

public void setEmployeeNumber(int num) {
employeeNumber = num;
}

public String getEmployeeName() {
return employeeName ;
}

public void setEmployeeName(String name) {
employeeName = name;
}
}

client类:

import java.io.*;

import java.net.*;



public class Client {



   public static void main(String[] arg) {

      try {

         Employee joe = new Employee(150, "Joe");



         System.out.println("employeeNumber= "

                              joe .getEmployeeNumber());

         System.out.println("employeeName= "

                              joe .getEmployeeName());



         Socket socketConnection = new Socket("127.0.0.1", 11111);





         ObjectOutputStream clientOutputStream = new

            ObjectOutputStream(socketConnection.getOutputStream());

         ObjectInputStream clientInputStream = new 

            ObjectInputStream(socketConnection.getInputStream());



         clientOutputStream.writeObject(joe);



         joe= (Employee)clientInputStream.readObject();



         System.out.println("employeeNumber= "

                              joe .getEmployeeNumber());

         System.out.println("employeeName= "

                              joe .getEmployeeName());



         clientOutputStream.close();

         clientInputStream.close();



      } catch (Exception e) {System.out.println(e); }

   }

}

Server类:

import java.io.*;
import java.net.*;

public class Server {

public static void main(String[] arg) {

Employee employee = null;

try {

ServerSocket socketConnection = new ServerSocket(11111);

System.out.println("Server Waiting");

Socket pipe = socketConnection.accept();

ObjectInputStream serverInputStream = new
ObjectInputStream(pipe.getInputStream());

ObjectOutputStream serverOutputStream = new
ObjectOutputStream(pipe.getOutputStream());

employee = (Employee )serverInputStream.readObject();

employee .setEmployeeNumber(256);
employee .setEmployeeName("John");

serverOutputStream.writeObject(employee);

serverInputStream.close();
serverOutputStream.close();


} catch(Exception e) {System.out.println(e);
}
}

}

上一篇: 关于session的详细解释
下一篇: 从Rails的活动记录说说元数据编程

http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到:
评论

相关推荐

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

    本篇将深入探讨如何通过Socket传递Java对象,重点讲解对象序列化的过程。 首先,让我们理解什么是Socket。Socket在计算机网络中是一种进程间通信机制,它允许两个网络应用程序之间建立连接并交换数据。在Java中,`...

    Socket通信之序列化对象通信

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

    java对象序列化.ppt

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

    使用Socket传递对象

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

    java客户端服务器传递对象

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

    Java对象序列化使用基础

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

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

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

    socket objectoutputstream 传对象 例子

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

    Javas_socket传递JavaBean(案例)

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

    对象序列化TCP传输

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

    Java序列化技术的探讨.pdf

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

    qt与java之间socket通讯

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

    基于socket编写的java五子棋

    5. **对象序列化与反序列化**: 为了在网络中传递复杂的对象(如棋盘状态),Java提供了对象序列化机制。对象被转换为字节流,然后通过网络发送。到达另一端后,通过反序列化恢复成原来的对象。在Java中,`java.io....

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

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

    java socket通信自定义消息协议

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

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

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

    java Socket qq聊天程序

    Java提供ObjectOutputStream和ObjectInputStream类来实现对象的序列化和反序列化。 7. **错误处理与异常捕获**:在网络通信中,错误处理是必不可少的。例如,Socket连接可能会失败,数据传输可能会出现错误,都需要...

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

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

    基于Java实现的socket即时通信系统

    `InputStream`和`OutputStream`的子类,如`ObjectInputStream`和`ObjectOutputStream`,可以用来处理对象的序列化和反序列化,使得复杂的数据结构也能在网络间传递。 4. **多线程处理**:为了处理多个并发的客户端...

Global site tag (gtag.js) - Google Analytics