问一个UDP传输疲劳问题。

sproll 2005-07-07 02:09:35
各位大虾,小弟最近写的程序跟远程视频传输有关,我使用UDP进行视频数据包的传送,数据率大概每秒10K-30K左右,每个数据包不超过1450字节,SOCKET的发送和接收缓冲为65507(SO_RCVBUF、SO_SNDBUF),SOCKET的模式是异步的窗口消息SOCKET。
现在我的问题是这样的:当服务端开启端口并与客户端之间发生数据传送的时候,刚开始一两个小时内数据传送正常,但是一两个小时之后掉包率非常地高,客户端甚至到了只有不到10分之一的数据包能够收到的地步,就好像SOCKET工作久了发生疲劳一样。
请问各位有没有碰到过这种SOCKET疲劳问题,能不能给小弟一些建议,先谢谢了!
...全文
182 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sproll 2005-07-08
  • 打赏
  • 举报
回复
谢谢FOXQWX。
现在我只剩下一个方法了:每隔几个小时重启SOCKET服务。
要是这样都解决不了,那我就束手无策了。
foxqwx 2005-07-08
  • 打赏
  • 举报
回复
sproll(sproll):
"好像过去碰到的电信宽带往网通宽带传送UDP包大小大致上不得超过1500字节这样奇怪的规则。
"这一点好像是与网络管理所采用的认证协议有关系,PPPOE的方式下数据链路层纯数据长度不能超过1492字节,否则就要分片传输了,而一般以太网都有1500以上

至于传输疲劳问题,确实比较少见,如果软件设计没有问题的话(内存分配与回收,差错控制与丢包重发等等都设计好并不容易),那应该是宽带运营商的服务质量有问题了,不要总怀疑是自己的问题,那样会很麻烦的,呵呵。
sproll 2005-07-08
  • 打赏
  • 举报
回复
我觉得内存的问题比较小,我有三条理由:
1、我编码很注意内存释放问题,该模块的代码我已经检查了多遍,未发现问题(虽然这条理由说服力不强)
2、VS7在DEBUG模式下调试程序时能够在退出调试的时候在输出栏中汇报内存泄漏(这一点偶觉得很方便),在这一点上,VS7并没有报告任何内存异常(这一点说服力比上一个强一点)。
3、最强说服力的理由:当我在局域网环境下长时间测试整个系统(>5小时),没有传输疲劳问题。为什么在公网上就有这样的问题,百思不得其解,好像过去碰到的电信宽带往网通宽带传送UDP包大小大致上不得超过1500字节这样奇怪的规则。
AntonlioX 2005-07-07
  • 打赏
  • 举报
回复
有一个可能性 就是你的代码有问题 比如有什么地方一直在 内存泄漏 等等
AntonlioX 2005-07-07
  • 打赏
  • 举报
回复
传输疲劳 还是头一次听说
softrain 2005-07-07
  • 打赏
  • 举报
回复
也可能后来网络繁忙了。
另外看看CPU和内存是否正常。
sproll 2005-07-07
  • 打赏
  • 举报
回复
TO happyparrot(快乐鹦鹉) :目前对问题的原因没有头续。
TO fisker0303(Thinking In Love) :调试显示服务与客户端均没有内存写漏。
PS:视频传输发生在电信宽带(756K)->网通宽带(756K)上,
在局域网中则没有这种疲劳问题。
fisker0303 2005-07-07
  • 打赏
  • 举报
回复
没遇到过,你的内存管理没什么问题吧,呵呵。
快乐鹦鹉 2005-07-07
  • 打赏
  • 举报
回复
呵呵。挺新鲜的名称。没有碰到过。确定是软件方面的原因么?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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