用recv阻塞收数据包,发现丢包,但是同时用抓包工具却能抓到所有的包,为什么啊?!(window平台)

famugong 2005-07-10 10:58:21
很简单的程序,收RTP的包,同时用抓包工具抓包。
while(1)
{
if ((count = recv(context_ptr->s_rtp_recv,buf,len,0)) == SOCKET_ERROR)
{
return 0;
}
}
程序里分析rtp的CSeq发现会丢包,30包左右会丢一个,每个RTP包大概是500-1024byte,buf是1500byte。
但是同时用抓包工具发现所有的包都抓到了。
不明白为什么会丢包,是在局域网内的。
哪位牛人知道,还请给小弟指点一下,谢谢!在线等!
...全文
322 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
famugong 2005-07-10
  • 打赏
  • 举报
回复
100k的码流不会丢包,现在的码流是300k的
oyljerry 2005-07-10
  • 打赏
  • 举报
回复
降低一下发送速率试试呢
famugong 2005-07-10
  • 打赏
  • 举报
回复
谢谢,select 方法我也用过,不知道你的多select几次是什么意思,我用的时循环,不就相当于一直在select?难道还有什么别的说法?
taol 2005-07-10
  • 打赏
  • 举报
回复
在协议栈的buffer里面,改变你的代码,采用循环查找(select)的方式,select()返回了了正确的值再用recv.多select()几次,网络状况不同,有时候需要多查询几遍.
famugong 2005-07-10
  • 打赏
  • 举报
回复
补充一下,接到数据后,就是分析RTP头,没有其他操作了,我把SOCKET接受缓存设置为1024*1024。
应该不会是发送端发送太快,接受端来不及处理吧

4,354

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧