0

我最近想出了如何使用 ObjectOutputStream 和 ObjectInputStream 通过服务器和客户端之间的简单 Java 套接字连接发送对象。我想知道是否要传输可能很大的对象,例如图像,是否可以放置一个线程来跟踪已发送/接收多少数据的进度?如果这个问题的答案不是很直接,有人可以解释我如何去做类似的事情吗?提前致谢!

4

2 回答 2

5

Apache Commons IO 库有一对实现字节计数输入/输出流过滤器CountingInputStream的类。CountingOutputStream

如果将这些插入到流链中,则可以跟踪读取或写入的字节数。(这些过滤器必须插入物理输入/输出流和对象流之间的某个位置。)

FilterInputStream您可以通过继承和类自己实现相同的事情FilterOutputStream。甚至还有一个名为 Swing 的类ProgressMonitorInputStream可以完全实现您所需要的。

于 2011-03-20T02:30:59.360 回答
0

我建议编写检测的 InputStream 和 OutputStream ,它们只是在构建时通过管道传输到/从流中提供,同时计算通过的字节数。

然后,您可以在插入上述其中之一的情况下构建您的流链——请注意不要在检测的 OutputStream 和网络之间有太多缓冲区,否则您将计算进入缓冲区而不是网络的字节数。

您还可以通过编写另一个输出流来计算要发送的总字节数,该输出流只是将数据丢弃并通过您的检测输出流将您的对象写入一次。

于 2011-03-20T01:09:00.717 回答