.net – 如何通过UDP发送实时数据?
我必须尽可能快速,实时地通过UDP发送一系列视频帧,当我掌握了基础知识时,我遇到了各种各样的困难.我的一些目标:
>数据通常通过拨号发送(因此UDP而不是TCP),但也需要支持快速以太网. 我已成功实现了大部分内容: >我将帧数据分解为一个或多个大约500字节的数据报,每个数据报都有一个序列号和其他信息.接收器重新组装整个帧并检测是否缺少任何数据报. 我现在面临的主要困难是检测有效带宽并处理延迟,特别是通过拨号(最大~4,000字节/秒).例如,如果我尝试使用TcpClient.Send()发送100,000字节/秒,则它们似乎到达(没有丢弃的数据报),但是在最后一个数据报到达时具有大的延迟.我认为TcpClient.Send()函数是阻塞的,直到缓冲区能够发送,这会混淆我当前的算法. 任何人都可以指出我的任何信息来源如何: >通过UDP检测实际带宽. 我在上周一直在转动轮子,每次解决一个问题时,另一个问题似乎是头部. 解决方法
您还可以为每个数据包添加时间戳.然后你可以检测延迟是否增加.在这种情况下,您发送回消息以减少带宽.
在创建连接时,您可以使用非常少的数据包检测延迟.此值不应在运行时更改. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |