这篇文章主要实现的是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。Socket在计算机网络中是一种进程间通信机制,它允许两个网络应用程序之间建立连接并交换数据。在Java中,`...
服务器接收并反序列化这个字节流,恢复出Student对象,从而完成了一次基于Socket的序列化对象通信。 总结,Socket通信结合对象序列化提供了一种有效的方式,让网络上的不同系统可以共享和交换自定义的Java对象。这...
在网络中传递对象,可以通过Socket编程实现,将序列化的对象作为数据流在网络中传输。客户端和服务器端分别使用`ObjectOutputStream`和`ObjectInputStream`进行读写。 自定义对象序列化,可以重写`writeObject()`和...
Java序列化是将对象转换为字节流的过程,以便于存储或在网络上传输。要使一个类可序列化,你需要在类定义上实现`Serializable`接口。例如: ```java public class MyObject implements Serializable { // 类的属性...
"java客户端服务器传递对象"这个主题涉及到的核心知识点主要包括Java RMI(Remote Method Invocation,远程方法调用)、对象序列化以及网络通信的基本原理。下面我们将深入探讨这些概念。 1. **Java RMI**: RMI是...
所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过...像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。
总之,Java与C语言通过Socket通信传递结构体数据,需要在两者之间建立共同的数据表示方式,并实现相应的序列化和反序列化策略。这通常涉及到对网络协议、数据编码和解码的深入了解。在实际开发中,选择合适的序列化...
而ObjectOutputStream则是一个序列化流,用于将Java对象转换为字节流,以便通过网络传输。 首先,我们来理解Socket。Socket是Java的java.net包中的类,它主要用于网络编程,创建TCP连接。当你想要在一个应用程序中...
Java序列化是将对象转换为字节流的过程,以便在网络中传输或持久化存储。要使一个类可序列化,需要实现`java.io.Serializable`接口。例如,如果我们有一个名为`MyBean`的JavaBean: ```java public class MyBean ...
4. **发送序列化对象**:通过已建立的TCP连接,将序列化后的字节流写入Socket的输出流。 5. **接收和反序列化**:在另一端,从Socket的输入流读取字节流,然后使用相应的反序列化方法恢复为对象。 6. **关闭连接**...
本文将介绍几种常用的Java序列化技术,并通过比较、分析这些技术在功能、序列化后的字节数和序列化、反序列化速度方面的差异,得出了在什么应用环境下应该如何选择序列化技术框架。 对象序列化概述 对象序列化是一...
总结,Qt与Java之间的Socket通信涉及了网络编程、JSON序列化和反序列化、多线程处理(特别是在Java中处理并发连接时)、以及错误处理等多个技术点。理解并熟练掌握这些知识点,可以构建可靠的跨平台通信系统。
5. **对象序列化与反序列化**: 为了在网络中传递复杂的对象(如棋盘状态),Java提供了对象序列化机制。对象被转换为字节流,然后通过网络发送。到达另一端后,通过反序列化恢复成原来的对象。在Java中,`java.io....
2. 序列化对象:使用`ObjectOutputStream`的`writeObject()`方法将对象写入输出流。 3. 反序列化对象:使用`ObjectInputStream`的`readObject()`方法从输入流中读取对象。 在Java中,序列化不仅涉及对象的属性,还...
序列化是将Java对象转化为字节数组的过程,反序列化则是相反的操作。 在实际应用中,为了提高效率和健壮性,还需要考虑错误处理、多线程、网络异常等问题。例如,设置超时时间防止死锁,使用BufferedReader或...
Java序列化(Serializable)是Java平台提供的一种持久化机制,允许将对象的状态转换为字节流,以便存储到磁盘、数据库中,或者在网络上传输。这一过程被称为对象的序列化。反之,将字节流恢复为原来的对象状态称为反...
Java提供ObjectOutputStream和ObjectInputStream类来实现对象的序列化和反序列化。 7. **错误处理与异常捕获**:在网络通信中,错误处理是必不可少的。例如,Socket连接可能会失败,数据传输可能会出现错误,都需要...
因此,我们需要使用对象流(Object Stream)来序列化和反序列化对象,以便在网络间传递。 1. **序列化与反序列化**: 在Java中,为了让一个对象能够被序列化,该类必须实现`java.io.Serializable`接口。例如,我们...
`InputStream`和`OutputStream`的子类,如`ObjectInputStream`和`ObjectOutputStream`,可以用来处理对象的序列化和反序列化,使得复杂的数据结构也能在网络间传递。 4. **多线程处理**:为了处理多个并发的客户端...