本机对本机发视频包,采用jrtplib协议栈,基于udp的,对协议栈收到的数据包打印序号,发现中途丢了一些包,请问这些包是由于socket缓冲区慢了才丢的吗?
![]() |
2009-04-17 21:18:00
kemeng123
3.udp没有流量控制,因此发送速度比接收速度快,很容易出现这种情况 三种可能你都看看 排除下 |
![]() |
2009-04-17 22:06:00
哦!平静
有什么不可能的. |
![]() |
2009-04-17 22:47:23
未来之星
本机对本机发送还会不成功吗?对于视频传输来讲,不需要重传机制,做好容错处理就可以了。 |
![]() |
2009-04-17 23:30:00
lqz41
靠,不要给我解释tcp udp的原理,我想问包在哪个环节丢了 另外,只能用udp来传输视频数据。 |
![]() |
2009-04-18 03:06:00
红蓝青
我关心的是谁给丢了?是socket缓冲区满了丢的吗? |
![]() |
2009-04-18 03:36:00
逸风小子JK
同意。 |
![]() |
2009-04-18 04:06:02
shanzhh
UDP不保证可靠。 |
![]() |
2009-04-18 04:36:34
爱晨晨
udp本身是无状态的,无确认的, 用tcp |
![]() |
2009-04-18 05:10:54
小菩提
如果两台机器测试,局域网内,通过ethereal看了,包已经发到本地了。 |
![]() |
2009-04-18 05:36:01
博学之
udp一次不能超过512,超过了当然会丢包啊.可以加个较验和,丢包重发. |
![]() |
2009-04-18 05:55:40
liuxin591591
设置socket缓冲区大小可以解决这个问题吗? |
![]() |
2009-04-18 06:23:04
wangjingxuan817
由于udp协议本身没有自动找包的功能,因此经常会出现丢包的现象,会造成传送的文件丢包的现象 1.你看下发送端是否发送成功 2.你再用抓包工具看看 是否收到了 看下是网络问题 还是你程序问题 |
![]() |
2009-04-18 06:45:06
外宇星云
使用UDP时,如果缓冲区已满,再发来的包就会丢失。 |
![]() |
2009-04-18 07:06:00
kelly0215
很正常 我做的项目,采用的是RTP + UDP,丢包是很正常的,如果你用TCP,那么延迟就太大啦,没法看了 还有,网通和电信的接口处最容易丢包 至于丢包的率取决与网络连接状况.包没发过来才导致丢包,和你的接收缓冲区有什么关系啊?呵呵 |
![]() |
2009-04-18 07:24:38
万剑辉
UDP是无连接的,面向消息的数据传输协议,与TCP相比,有两个致命的缺点,一是数据包容易丢失,二是数据包无序。 要实现文件的可靠传输,就必须在上层对数据丢包和乱序作特殊处理,必须要有要有丢包重发机制和超时机制。 常见的可靠传输算法有模拟TCP协议,重发请求(ARQ)协议,它又可分为连续ARQ协议、选择重发ARQ协议、滑动窗口协议等等。 如果只是小规模程序,也可以自己实现丢包处理,原理基本上就是给文件分块,每个数据包的头部添加一个唯一标识序号的ID值,当接收的包头部ID不是期望中的ID号,则判定丢包,将丢包ID发回服务端,服务器端接到丢包响应则重发丢失的数据包。 模拟TCP协议也相对简单,3次握手的思想对丢包处理很有帮助。 |
![]() |
2009-04-18 07:42:00
金色之心
ethereal都看到包过来了,你能说包还没到吗?局域网内两台机器测试。 |
![]() |
2009-04-18 08:00:00
黄子俊
udp丢包很正常吧 丢包了 你检查到 再请求发丢了那个序号的包就可以了 |
![]() |
2009-04-18 08:12:00
weiweibnu
UDP协议本身就不保证一个发送成功,所以需要重发机制等.. |
![]() |
2009-04-18 08:27:07
huaizheqi
你传输视频 如果是压缩的比较厉害的 那就不Y要用UDP 呀。关于丢包原因 如果在局淤网 则可能是你收的比较慢 如果在公网 那就是 UDP 本身的原因 你找出来也没用 你的解决方式 只能是TCP 或者RTCP 之类 |
![]() |
2009-04-18 08:48:00
燕子MM
一个原因,就是接收慢了 缓冲区满,丢掉了。 |
![]() |
2009-04-18 09:03:40
糖果小妖
不想丢包,直接用TCP呗。简单。 |
![]() |
2009-04-18 09:18:00
想学习
人品问题? 开玩笑,哈,你说的是有可能的, 没有什么不可能,! |
![]() |
2009-04-18 09:30:00
sweet百分百
UDP是面向无连接的 传输不具有可靠性,丢包是难免的,但应该不会影响到传输 另外1楼说的请求重发是TCP的重传~UDP没有 |
![]() |
2009-04-18 09:39:37
wangyn990428
加大缓冲只能缓解问题,另外还应让程序尽快接收缓冲区中的数据,不过也不能完全避免这个问题。 |