socket中客户端readObject 得到的对象不是服务端发送的是什么情况?
情景:
现有一个服务端,发送一个商品列表给客户端,客户端在接收到列表后发送修改数量请求,服务端收到修改请求后,修改相应商品的数量,并再次发送修改后的商品列表给客户端。此时问题出现了!
服务端的输出内容为:

而客户端的输出内容为:

以下贴出服务端和客户端的代码(为了方便大家浏览,只贴了重要部分,详细内容可下载之后的附件):
服务端:
客户端:
Datas:
为了方便同学们测试,附上原版代码:
http://pan.baidu.com/s/1pJwra7x
现有一个服务端,发送一个商品列表给客户端,客户端在接收到列表后发送修改数量请求,服务端收到修改请求后,修改相应商品的数量,并再次发送修改后的商品列表给客户端。此时问题出现了!

服务端的输出内容为:

而客户端的输出内容为:

以下贴出服务端和客户端的代码(为了方便大家浏览,只贴了重要部分,详细内容可下载之后的附件):
服务端:
ServerSocket ss = new ServerSocket(10000);
Socket socket = ss.accept();
//输出和输入流
ObjectOutputStream oos = new ObjectOutputStream(
socket.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
//商品的集合
List<Goods> goods = new ArrayList<Goods>();
//添加一个商品
goods.add(new Goods(1, "北方", 10));
//new 一个数据传输类
Datas data = new Datas();
//将商品列表放进传输类当中
data.obj = goods;
//在服务端打印商品列表
pirntList(goods);
//将数据传输类发送给客户端
oos.writeObject(data);
//发送完成后修改服务端的商品列表中的商品数量
System.out.println("发送给客户端后修改数量");
goods.get(0).count = 20;
//重新发送
data.obj = goods;
//再次打印
pirntList(goods);
//再次发送给客户端
oos.writeObject(data);
//等待客户端
Thread.sleep(10000000);客户端:
Socket socket = new Socket("localhost", 10000);
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(
socket.getOutputStream());
//用来接收商品的列表
List<Goods> goods = null;
//读取服务端发送过来的Datas
Datas data = (Datas) ois.readObject();
//将Datas中的obj转换成商品列表
goods = (List<Goods>) data.obj;
System.out.println("第一次的列表:");
//打印
pirntList(goods);
//再次读取服务端发送过来的Datas
data = (Datas) ois.readObject();
//这次是服务端修改后的商品列表
goods = (List<Goods>) data.obj;
System.out.println("第二次的列表:");
pirntList(goods);Datas:
public class Datas implements Serializable{
public Object obj = null;
}为了方便同学们测试,附上原版代码:
http://pan.baidu.com/s/1pJwra7x
...全文
相关推荐
Java中使用Socket发送Java对象实例
主要介绍了Java中使用Socket发送Java对象实例,本文使用对象流直接发送对象,本文同时给出代码实例,需要的朋友可以参考下
(AS3)socket+客户端与服务端+实例
flash使用socket通讯的一个挺好的例子哦``
Java Socket实现的传输对象功能示例
主要介绍了Java Socket实现的传输对象功能,结合具体实例形式分析了java socket传输对象的原理及接口、客户端、服务器端相关实现技巧,需要的朋友可以参考下
Java服务器与客户端的通信中对象流的使用
Java服务器与客户端的通信中对象流的使用
java socket工具类示例
java socket工具类示例,使用控制台实现简单收发,简单聊天系统.


Java SE
