C++ 在不同计算机上使用相同端口时出错

C++ 在不同计算机上使用相同端口时出错,c++,sockets,boost,boost-asio,C++,Sockets,Boost,Boost Asio,我编写了一个应用程序(称为M2),它读取到达一个端口的数据,对其进行处理,然后将结果发送到另一个端口 如果我选择将数据发送到193.168.1.101:5001,一切正常 如果我发送到192.168.1.101:5001,它不会。为什么更改IP地址的第一个字节会有什么不同 更改的原因是,当我将数据包传输到193.168.1.101:5001时,它大约需要一毫秒,但当我传输到192.168.1.101:5001时,它需要一秒钟。这千倍的时间变化打乱了我程序中的其他一切——特别是读卡器饥饿,我开始丢

我编写了一个应用程序(称为M2),它读取到达一个端口的数据,对其进行处理,然后将结果发送到另一个端口

如果我选择将数据发送到193.168.1.101:5001,一切正常

如果我发送到192.168.1.101:5001,它不会。为什么更改IP地址的第一个字节会有什么不同

更改的原因是,当我将数据包传输到193.168.1.101:5001时,它大约需要一毫秒,但当我传输到192.168.1.101:5001时,它需要一秒钟。这千倍的时间变化打乱了我程序中的其他一切——特别是读卡器饥饿,我开始丢失输入数据包


是什么导致传输时间发生如此剧烈的变化?请注意,传输不会失败,只是需要非常长的时间。

与193.168.1.101:5001(约1毫秒)相比,地址192.168.1.101:5001非常慢(传输数据包大约2秒)。由于发送器使用同步发送,因此输入缺少CPU,因此输入数据包被丢弃

我将输出发送器更改为异步操作,并使用截止时间计时器来限制尝试传输数据包所花费的时间。这就解决了输入不足的问题。我使用了基于以下内容的代码:


我仍然很好奇,为什么一个地址比另一个地址慢一千倍。坏地址与传输计算机位于同一子网中(这是正确的术语吗?),因此这可能与此有关。

我同意网络用户的看法。你所说的不是网络问题,根本不可能。IP地址作为一个整体使用,而不是前3个八位字节。你能举一个“当我这样做时,各种可怕的错误”的例子吗?你能ping目标机器吗?我闻到了未定义的行为。发布一个自包含的示例。小测试同步程序不会显示问题(一旦我修复了输入错误)。大型异步程序仍然显示了这个问题,因此我必须尝试在那里跟踪它。这个周末我会很忙。