【发布时间】:2018-07-25 22:25:13
【问题描述】:
我正在尝试找出导致我在测试系统时观察到的奇怪问题的原因。
被测系统通过 UDP 从外部源接收 HTTP 请求。为了测试,我使用 Python 在本地网络上发送 UDP 数据包来模拟这个源,以进行测试,我发送 1、20、133 和 1000 条消息。
当我在本地 Windows 机器上运行测试时,我经常会丢失 UDP 数据包,有时甚至无法接收到单个消息。但是,当我使用 Virtual Box 创建一个虚拟 Linux Box (Centos) 并从那里运行相同的测试时,我 100% 的时间都获得了 100% 的成功率。
从 Windows 发送 UDP 消息是否有任何已知问题,我可以在我的机器上调整 Windows 和 Linux 之间的任何奇怪的缓冲差异?
【问题讨论】:
-
UDP 不是一个可靠的协议,使用它的应用程序应该做好丢包的准备。大容量会溢出缓冲区,然后数据包将被丢弃。
-
在 Windows 和 Linux 上你用什么来接收数据包?
-
@Barmar OP 似乎意识到了这一点。问题是关于 Windows 和 Linux 之间的损失差异。
-
可能只是它为 UDP 提供的缓冲区数量不同。可能有一个注册表设置来调整它。
-
@Barmar UDP 的决定是由客户端强加给我们的,但是我预计使用 Linux 和 Windows 之间会出现持续的失败,而不是两者之间的巨大差异。此外,局域网上的数据包丢失应该最小到 0。