如何使用ObjectOutputStream和writeObject()和reset()方法加速两个套接字之间的对象传递?

时间:2012-06-18 03:50:48

标签: java performance sockets objectoutputstream

我正在编写一个应用程序(一个多人游戏),其中对象需要通过服务器从应用程序的一个实例传递到另一个实例(并且非常快)。

我正在使用通过套接字获取的ObjectOutputStreamsObjectInputStreams来执行此操作。

但是,正在传递的对象的状态会不断更新,这意味着典型的writeObject()方法不会执行该操作(它只会将对象写入一次,然后在以后传递对象的引用)调用,意味着它的实例变量的值永远不会实际更新。)

要“修复”这个,我在每次调用ObjectOutputStream.reset()后都调用了writeObject()方法,这确实解决了更新对象状态的问题;然而,它运行速度太慢,我认为这是因为对象在每次“刷新”时都被完整传递。

我的问题是,如何在不必完全重写对象的情况下更新我通过网络传递的对象的状态? (我假设这是我如何加快速度;如果我错了,或者如果存在其他方法,请分享)提前感谢您的任何建议!

另外,关于传递的对象的大小:它不是太大......一些布尔变量,一对双数组和一些其他小变量(没有长度为1000的列表,每个包含另一个列表)。

1 个答案:

答案 0 :(得分:1)

  1. BufferedOutputStream和套接字之间使用ObjectOutputStream
  2. BufferedInputStream和套接字之间使用ObjectInputStream
  3. flush()writeObject()
  4. 之后致电writeUnshared().