很奇怪的行为......
我有3台机器:
----------- ------------ ----------- | A (x86) |-----| B (x86) |-----| C (arm) | | sender | | receiver | | sender | ----------- ------------ -----------
问题是:当机器C(ARM-android)发送有效负载大小超过1472字节的UDP数据包(数据包被分段之前的最大有效负载),机器B上的服务器应用程序永远不能收到它,...关于那个:
我花了一些时间在互联网上,但从来没有找到像这样的话题。每次人们遇到UDP故障时,他们的MTU发现都不正确,或者他们在测试过程中做了一些误操作,或者他们无法在接收器主机上转储消息,......这不是这里的情况!!
当然,我知道问题出在发送方端(机器C),但是可能更容易在接收端启用一些日志(在内核级别?)来理解UDP数据报消失的原因!?有什么建议?我可以在/ proc / sys / net中检查特定文件,还是应该启用内核选项?
非常感谢。
答案 0 :(得分:0)
如果您的机器确实如图所示连接,即它们没有连接到交换机/集线器,那么您必须在B上有两个网卡,因此它们将具有不同的地址,因此您用于发送的地址来自A的B与从C发送给B的不一样,即
您发送的地址可能是错的吗?虽然这不能解释小数据报是如何通过的 - 你确定它们是吗?
注意:由于您未连接到DHCP,因此必须手动分配这些地址,此外,这些地址需要与A和C位于同一子网中。是您的所有地址(A,BA,BC和C)在同一个子网?什么地址:port是B上绑定和监听的套接字? B收到数据报后会继续收到吗?请提供一些代码..
或者,即使您的计算机已连接到交换机/集线器,也是从C发送的数据报上设置的“请勿分段”位,这可以解释为什么会删除较大的数据报较小的。