我的系统涉及通过 TCP 套接字发送大量数据和元数据。我正在发送一个包含各种元数据以及 20 个字节数组的单个对象。到目前为止,我一直在使用包含 BufferedOutputStream 的 ObjectOutputStream 处理小示例(130kB 数组)。我尝试达到 67MB 数组的目标,但 ObjectOutputStream 无法处理那么多数据。我能够发送 1MB 的数组,但 writeObject() 在 2MB 处挂断。
我听说 DataOutputStream 更快,但我宁愿不必将我的元数据编码为字节并在另一端解码。有没有一个很好的选择可以快速发送非常大的对象?
编辑:
在每个写入方法之后,我已经在使用 reset() 了。我目前正在发送一个包含我自己的 Message 对象的 SignedObject,该对象包含 20 个数组以及许多元数据字段。我宁愿把这一切都打包,因为它很方便,但我知道分离可能是唯一的方法。话虽如此,我仍然需要确保所有传输都是安全的。
更新:
所以我去吃午饭,回来后决定试着弄清楚事情是挂在发送端还是接收端。然后它就再也没有挂断。我可以继续成功发送多达 4MB 的数组,直到我用完堆(这是不相关的,只是意味着我需要一台更好的计算机或更有效的处理)。所以我想问题消失了?但这并不意味着我不需要更好的传播方式,所以如果人们有想法,我会采取更多的想法。另外,我假设一旦我更新它,它将再次停止工作......