首页 > 解决方案 > LTE 上的 UDP 流量

问题描述

我开发了一个 C++ 应用程序,通过 UDP 从 Odroid 设备上的网络摄像头流式传输视频。客户端是一个使用简单 UDP 套接字的 iPhone 应用程序,它可以通过 Wi-fi 完美运行,但不能通过 LTE。sendto() 调用工作正常,但 recvfrom() 永远阻塞。首先,我认为这与 iPhone 阻止 UDP 流量有关,但我还在笔记本电脑上尝试了一个客户端,该客户端连接到 iPhone 的热点并因此通过 LTE。您是否认为电话提供商会阻止 UDP 流量?我更喜欢 UDP 而不是 TCP,以实现更快的流式传输。任何建议将不胜感激!谢谢!

更新:经过进一步检查,我找到了问题的原因。事实证明,UDP over LTE 设置了 IP_MTU_DISCOVER 标志,如果用户的数据包大于设备的 MTU,它不会执行 IP 分段,而只是丢弃数据包。我的应用程序正在发送大于 MTU 的数据包,但在 Wi-fi 的情况下,它们在 IP 层被分段。如果禁用 IP_MTU_DISCOVER 标志,大数据包将被分段并成功到达目的地。另一种选择是从应用程序发送小于 MTU 的数据包。这两种方法都没有表现得那么好,但至少这个谜团已经解决了。

标签: socketsudpstreamingwebcamlte

解决方案


推荐阅读