Java socket传递对象(object)结果异常,请关注。

qrhome 2004-04-16 01:13:44
在利用socket传递对象时,服务端所传递的对象(一个类的实例,该类里面全是一些set和get方法),每次在由服务器传递给客户端之前,该对象所属的类中的set方法将一些值设置,通过writeObject()将该对象传递给客户端,客户端通过readObject()读出,再用该对象的get方法取得所属的类中的值。

以上是个循环操作。
但运行结果发现:第一次客户端读出该对象所属的类中的值是正确的,而以后每次读出的都是第一次读出的结果,这显然是不对的。好像传递过来的的对象一直没有更新。

高分请教解决方法或思路。
谢谢!
...全文
169 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qrhome 2004-04-23
  • 打赏
  • 举报
回复
这个问题找到原因了,应该是第一位所说的,是引用上出了问题,obj在传递之前,是由另一个类传过来的,不应该直接传递obj,应该本地重新将ojb中的内容赋给一个A的对象,而不是简单让a = obj;
如果用a = obj;则在传递a的时候,应该得到的是obj的地址,传递给客户端每次都从这一个地址上读取,结果当然就不对了。
panpan221 2004-04-19
  • 打赏
  • 举报
回复
大力学习
hup 2004-04-16
  • 打赏
  • 举报
回复
up
zealVampire 2004-04-16
  • 打赏
  • 举报
回复
不用也可以吧 每次都要重新new 好像,,写个试试 待会
kingfish 2004-04-16
  • 打赏
  • 举报
回复
第二次 obj 需要重新new
obj = new A();
obj.setName("Petter");
os.writeObject(obj);
oxv 2004-04-16
  • 打赏
  • 举报
回复
gz
qrhome 2004-04-16
  • 打赏
  • 举报
回复
高手请进!高分恭候!
qrhome 2004-04-16
  • 打赏
  • 举报
回复
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(obj);

obj就是A类的一个实例,每次在服务端writeObject前,执行obj的set方法,
如:
第一次 obj.setName("Tom");
第二次 obj.setName("Petter");
...

但从客户端得到的只是第一次set的"Tom".

bigcrazy 2004-04-16
  • 打赏
  • 举报
回复
发送方的代码呢?
bigcrazy 2004-04-16
  • 打赏
  • 举报
回复
把代码片段贴出来看看吧。
qrhome 2004-04-16
  • 打赏
  • 举报
回复
在客户端每次readObject()后,都执行:
A a = (A) objectInputStream.readObject();

A类就是要传递的类,a则每次都从objectInputStream中read出来的对象得到。
然后再执行a的get方法,如 a.getName();
但结果每次a.getName()都是服务端第一次setName()所set的值。
qqbz 2004-04-16
  • 打赏
  • 举报
回复
这可能和你的传输无关。
可能是对象及对象的引用上出了问题。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧