【发布时间】:2016-02-23 05:36:07
【问题描述】:
我编写了一个应用程序(称为 M2),它读取到达一个端口的数据,对其进行处理,然后将结果发送到另一个端口。
如果我选择向 193.168.1.101:5001 发送数据,一切正常。
如果我发送到 192.168.1.101:5001,它不会。为什么更改 IP 地址的第一个字节会有影响?
更改的原因是当我将数据包传输到 193.168.1.101:5001 时大约需要一毫秒,但是当我传输到 192.168.1.101:5001 时需要一秒以上。这种千倍的时间变化弄乱了我程序中的其他一切——尤其是阅读器饥饿,我开始丢失输入数据包。
什么会导致传输时间发生如此剧烈的变化?请注意,传输不会失败,只是需要很长时间。
【问题讨论】:
-
我同意人们对网络的看法。你说的不是网络问题,根本不可能。使用整个 IP 地址,而不是前 3 个八位字节。
-
你能举个例子说明“我这样做时会出现各种可怕的错误”吗?
-
你能ping通目标机器吗?
-
我闻到了未定义的行为。发布一个独立的示例。
-
小测试同步程序没有显示问题(一旦我修复了错字)。大型异步程序仍然显示问题,所以我将不得不尝试在那里跟踪它。这个周末我会很忙。
标签: c++ sockets boost boost-asio