【发布时间】:2012-11-05 15:38:01
【问题描述】:
发送通过套接字创建的可序列化对象时遇到一个奇怪的问题。事实上,如果我在同一台机器上运行服务器和客户端,它工作得很好,但是如果服务器和客户端在不同的机器上,服务器端的读取对象是空的(大小等于零)
任何人有解决这个问题的想法吗? (代码如下)
服务器:
public static void main () {
...
InputStream is = mysocket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
ArrayList<MyObject> list_of_object;
list_of_object = (ArrayList<MyObject>) ois.readObject();
logger.log(Level.INFO,"object readen with size : "+list_of_object.size());
...
}
客户:
public static void main () {
...
ObjectOutputStream oos = new ObjectOutputStream(mysocket.getOutputStream());
oos.writeObject(list_of_object);
...
}
【问题讨论】:
-
对象中的
size()方法有什么作用? “服务器端的已读对象为空(大小为零)”是什么意思?你应该更多的细节和解释。 -
我的对象是一个 ArrayList 所以它是 ArrayList 对象的 size 方法(返回列表中元素的数量)
-
如果你正在写/读
ArrayList那你为什么要把读对象转换成MyObject。 -
我这样写只是为了简单。 MyObject 在我的代码中被替换为:ArrayList
-
您已经过度简化,以至于您删除了显示问题的代码。尝试发布您的真实代码,或者至少是实际存在问题的精简版本。
标签: java sockets serialization remote-server objectinputstream