【发布时间】:2015-03-14 09:47:11
【问题描述】:
我正在编写一个基本的服务器/客户端代码来使用套接字通过网络发送一些自定义对象。
我的自定义对象还有一些其他已经初始化自定义字段。
例如
```
public class CustomObject implements Serializable {
private ONE one = new ONE(); //ONE implements Serializeable
private TWO two = new TWO(); //TWO implements Serializeable
private THREE three = new THREE(); //THREE implements Serializeable
String somestring = "piday";
....
@Override
public String toString() {
return somestring + one;
}
}
```
在客户端,我正在编写这样的对象: ```
Socket s = new Socket(HOST,PORT);
new ObjectOutputStream(s.getOutputStream())
.writeObject(machine);
并在 服务器 上接收它们,如下所示:
ServerSocket server = new ServerSocket(PORT);
try (Socket s = server.accept();
ObjectInputStream inputStream = new ObjectInputStream(s.getInputStream())) {
CustomObject machine = (CustomObject) inputStream.readObject();
System.out.println(machine);
} catch (ClassNotFoundException e) {
System.err.println("Err! Could not cast");
}
现在,在服务器端,一切运行都没有错误左右,问题是当我调试时,我看到 一个、tow 和三个 自定义对象是 NULL em>,但不是基本字符串 somestring!
请问我在这个例子中遗漏了什么或做错了什么?
请注意一、二和三类型定义也实现了可序列化。
与
所有自定义类定义服务器和客户端都可以访问。
【问题讨论】:
标签: java sockets serialization network-programming client-server