当前位置:  技术问答>linux和unix

关于用UDP进行文件传输

    来源: 互联网  发布时间:2016-08-17

    本文导语:  如题。现在进行实时传输视频都是基于UDP协议的。但是UDP是极不可靠的。通常是会发生丢包。我现在遇到这样的问题。比如 A:发送端(100Mbps内网,外出口为4M带宽) B:接收端(外网,2M带宽) 这样进行传输,但是A...

如题。现在进行实时传输视频都是基于UDP协议的。但是UDP是极不可靠的。通常是会发生丢包。我现在遇到这样的问题。比如
A:发送端(100Mbps内网,外出口为4M带宽)
B:接收端(外网,2M带宽)

这样进行传输,但是A端发送的速度很快(远远超过了4M),致使B端收不到这么多数据包,也不知道数据包到底丢在哪个地方。如何才能解决平衡问题哪?
因为UDP只管把数据发出去,根本不管数据流向,我考虑过两端一问一答的方式进行通信,但这样又会严重影响到网速,在实时传输中是不允许的。

最后提出最终问题,如何用UDP以最快速率,最低丢包和误码率传输数据那?

大家有什么好办法?

|
你可以参考RTP的方法,就是发送的每个数据包都有一个序列号,收端能过检测序列号是否有丢失也判别有没有数据丢失,对有丢失的数据请求重传。

|
QQ也是用UDP传文件。
首先肯定是要有确认包,然后对于局域网和广域网,确认的频率不一样,这需要算法去动态的学习。

另外,观察FTP之类的传文件协议,其发包速度都不是一下子就达到峰值,有一个渐变的过程,这是TCP协议的特点。你的协议一下子就以很快的速度发包是否合适?

|
在应用层实现TCP的窗口协议

|
语音和视频数据丢掉就丢掉了,这是应用的特点。文件传输,还是TCP吧,如果没办法TCP,那就自己实现一下:

http://dev.csdn.net/author/huanghongbo/760eee4d4e7f48bbac43495ebd58a872.html

|
你定一个简单的确认协议,比如说发送完一个包后就等待接收端发送一个确认的信息过来,然后再发送下一个包。最好给包加个头,头的信息要包含包的编号。
这里给个简单的例子
我定义网络传输的包格式
#define START_PACK  0XFF1
#define ACK_PACK   OXFF2
#define DATA_PACK  0XFF3
#define END_PACK   0xFF4

typedef struct _my_packet{
      int type; //包类型
       unsigned int seq; //包的编号
       void *buf; //数据域
}mypack;

这样接收端收到一个DATA_PACK,就回送一个ACK_PACK,接收端等待一定时间如果没有收到包(可能丢包),则重新发送ACK_PACK(因为没有收到END_PACK,表示传输没有结束)。
发送端最先发送START_PACK,并等待ACK_PACK,然后发送DATA_PACK,等待ACK_PACK....传输完毕,发送END_PACK,
实际上你还要考虑到发送端超时问题。
这里只是给你个简单的思路,希望对你有帮助/。

|
让他们双方做确认动作呢。

|
9楼说的方法可以,我尝试过。缺点在于收发两端的缓存巨大,且因此造成的时延很大。
问一下,从A端到B端需要多久时间,这就决定了你缓存的大小

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • udp视频录像文件存储服务器设计问题探讨!高手请赐教!
  • udp视频录像文件存储服务器设计问题
  • Qt:UDP:如何划分接收到的UDP包的界限
  • http走的是tcp还是udp?ssh是tcp还是udp?
  • tcp和udp套接字有何不同?在什么情况下用tcp什么情况下用udp????
  • 50求教一个菜鸟级别的UDP套接字问题,关于UDP server端只能接收一次数据的问题?在线等,一直等............
  • udp方式抓取网页
  • python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
  • udp socket客户端和udp服务端程序示例分享
  • TCP与UDP通信问题!
  • 请问下怎么关闭SUSE 9.1下UDP的checksum?
  • 如何判断udp端口可达
  • 关于epoll&udp的问题?
  • UDP包怎么生成啊?用什么函数??简单问题,帮个忙哈
  • IP,UDP,TCP的校验和计算
  • UDP协议在实现时有没有在发送端或者接收端设置缓冲区?
  • 服务进程收到的第一个UDP包的远端地址不对?
  • udp问题
  • 关于udp sendto时候端口选定问题
  • jme 0000:07:00.5:eht0:udp checksum error
  • udp的暂时连接
  • udp连接问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3