TcpClient带宽估计

时间:2010-12-16 07:04:06

标签: c# networking bandwidth tcpclient

我想使用TcpClient创建带宽估算工具。我遇到的问题是,我想在预定义的时间内执行测量(而不是预定义的缓冲区数据传输长度)。如果我使用循环(重复传输小块数据),不会降低性能(手动碎片与自动碎片)?

1 个答案:

答案 0 :(得分:1)

这取决于您是否禁用Nagle算法。如果你这样做,那么是的,你将自己分割东西。如果你不这样做,你就不太可能实现你的目标 - 因为当你认为数据时,实际的数据可能不会被写入......除非连接的另一端发送回最后的“ ack“当然。

我建议你使用一个小样本来计算粗略的速度,然后根据它创建一个更大的样本,预测需要多长时间。无论如何,你需要测量时间 - 这并不是说你要达到完全预定时间 - 所以它不应该有太大的区别。无论如何,你总是可以在某种程度上调整大小 - 我预计你最终会发送大量的数据包,除非它是一个非常慢的网络,所以如果你决定中途只发送200K而不是300K,这不应该有太大的不同。

这可能听起来像你原来的建议 - 但我只是在谈论每次通话发送“相当大”的数据块...比如说16K。 (无论如何,比数据包大小要大得多。)这不应该影响碎片,但仍然可以让你随着时间的推移调整一些东西。我不建议你发送微小的小包。