我想使用TcpClient创建带宽估计工具。im的问题是,我想在预定义的时间内执行测量(而不是预定义的要传输的缓冲区数据长度)。如果我使用循环(重复传输小块数据),会不会降低性能(手动碎片与自动碎片)?
发布于 2010-12-16 15:08:03
这取决于您是否禁用Nagle算法。如果你这样做了,那么是的,你会自己把事情搞得支离破碎。如果你不这样做,你就不太可能实现你的目标--因为数据可能并不是你认为的实际写入的……当然,除非连接的另一端发回最终的"ack“。
我建议您使用较小的样本来计算出粗略的速度,然后在此基础上创建一个较大的样本,以预测需要多长时间。无论如何,你都需要测量时间--你不可能达到一个精确的预定义时间--所以它不会有太大的不同。你总是可以在一定程度上调整大小-我预计你最终会发送大量的数据包,除非它是一个非常慢的网络,所以如果你中途决定只发送200K而不是300K,那应该没有太大区别。
当然,这可能听起来像你最初的建议--但我只是在说每次调用发送“相当大的”数据块……比如说16K。(无论如何,都要比数据包大小大得多。)这应该不会对碎片化有太大影响,但仍然允许您在进行过程中进行一些调整。我不建议你寄很小很小的包。
https://stackoverflow.com/questions/4458243
复制相似问题