日期:2014-05-20  浏览次数:20665 次

网络传输 集合发送 和 接受数据不一致
最近在倒弄一个小程序,现在出现的问题是网络传输使用Object流,实现的功能是客户端请求刷新用户列表,用户列表是HashSet存储,然后使用UserList类封装也实现了序列化,现在的BUG是:当客户端第一次接受了这个UserList对象后,以后再次请求到客户端的数据不被刷新。跟踪调试,服务端的确将数据发送出去了,但客户端数据就是不变。 这个程序的socket连接使用线程一直连接的。
疑问:是不是客户端缓冲区没有将此对象采纳,读取的还是原来的。

------解决方案--------------------
前几天我也遇到过同样的问题,解决的办法是如果是一个单独的功能,就只用一个ObjectStream,客户端传递一次就可以了。
解决办法是将请求列表这个功能所需要的东西封装在HashMap了,一次性传递到服务端,然后让服务端来判断

比如:
HashMap hm = new HashMap();

hm.put("1",1);//这个1是用来让服务端判断是什么操作的,比如显示用户列表这个操作
hm.put("2",Object);这个Object是显示用户列表所需要的东西

总之服务端只需要根据键值来干不同的事情。