加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

c – 如何调试丢包?

发布时间:2020-12-13 19:15:34 所属栏目:Linux 来源:网络整理
导读:我写了一个C应用程序(在Linux上运行),它提供大约400 kbps的RTP流.对于大多数目的地,这工作正常,但一些目的地经验包丢失.有问题的目的地似乎有一个较慢的连接,但它应该足够快到我发送的流. 由于这些目的地能够为其他应用程序接收类似的RTP流而不丢包,我的应用

我写了一个C应用程序(在Linux上运行),它提供大约400 kbps的RTP流.对于大多数目的地,这工作正常,但一些目的地经验包丢失.有问题的目的地似乎有一个较慢的连接,但它应该足够快到我发送的流.

由于这些目的地能够为其他应用程序接收类似的RTP流而不丢包,我的应用程序可能有问题.

我已经验证了一些事情:
– 在tcpdump中,我看到所有RTP数据包都在发送机器上传出
– 有一个UDP发送缓冲区(我试过64KB到300KB之间的大小)
– RTP数据包大多数保持在1400字节以下,以避免碎片

发送应用程序可以做些什么来最小化丢包的可能性以及调试这种情况的最佳方法是什么?

最佳答案
不要发送大块突发的数据包.

数据包丢失通常是由数据包缓冲区大小有限的慢速路由器引起的.慢速路由器可能能够处理1 Mbps就好了如果它有时间发送出10个数据包然后再接收10个数据包,但如果100 Mbps发送方向它发送了大量50个数据包它就别无选择但只能掉线其中40个.

尝试扩展发送,以便您只写出每个时间段内写入的内容.如果你必须每五分钟写一个数据包,那就这样做,而不是每秒写5个数据包.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读