gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:19:59 26 4
gpt4 key购买 nike

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

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

但是,传递的对象的状态不断更新,这意味着典型的 writeObject() 方法无法实现这一目的(它只写入对象一次,然后传递对它随后被调用,这意味着它的实例变量的值永远不会真正更新)。

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

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

另外,关于传递的对象的大小:它并不太大...几个 boolean 变量,几个 double 组和一些其他次要变量(没有长度为 1000 的列表,每个列表都包含另一个列表)。

最佳答案

  1. ObjectOutputStream 和套接字之间使用 BufferedOutputStream
  2. ObjectInputStream 和套接字之间使用 BufferedInputStream
  3. 在每次 writeObject()writeUnshared() 之后调用 flush()

关于java - 如何使用 ObjectOutputStream 以及 writeObject() 和 reset() 方法加速两个套接字之间的对象传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com