社区
网络编程
帖子详情
udp包发送时如何控制速率?
coolboylmk
2007-08-19 04:28:04
如题,每个udp包长都不能超过1500,所以发送大量数据时需要反复调用send()函数
如果像下面这样
while(1)
{
send(...);
if(...) break;
}
因为发送的太快,接受端来不及接受丢包
如果每次调用send()后都sleep(1),发送1M的数据就要sleep1秒,又感觉太慢了,并且用sleep()似乎不是个好办法,还有其他办法控制发送速率吗?
...全文
843
5
打赏
收藏
udp包发送时如何控制速率?
如题,每个udp包长都不能超过1500,所以发送大量数据时需要反复调用send()函数 如果像下面这样 while(1) { send(...); if(...) break; } 因为发送的太快,接受端来不及接受丢包 如果每次调用send()后都sleep(1),发送1M的数据就要sleep1秒,又感觉太慢了,并且用sleep()似乎不是个好办法,还有其他办法控制发送速率吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
coolboylmk
2007-08-20
打赏
举报
回复
我发送的就是视频,我不要求可靠性,只是想把效率提高,现在发送的时候cpu占用太高,速率不好控制
vocanicy
2007-08-19
打赏
举报
回复
首先,网络情况是无法预测的;再则,UDP方式无法保证数据传输的可靠性
如果一定要用UDP实现,就必须实现客户端应答。
组播的方式只能适合像视频之类的应用,想保证数据可靠传输,组播方式不适用。
coolboylmk
2007-08-19
打赏
举报
回复
楼上两位朋友,如果是udp广播或者组播,接收端非常多的情况下,根据接受端速度来判断就比较麻烦了,有其他办法吗?
DentistryDoctor
2007-08-19
打赏
举报
回复
根据目标速度来确定发送速度,如果超过发送速度就暂停发送。
yxz_lp
2007-08-19
打赏
举报
回复
自己没有试过,让接受端受到数据后,向发送端发送已接受到数据通知,发送端收到通知后再发送接下来的数据。
计算机网络 传输层 TCP和
UDP
协议
Re: 计算机网络 传输层 TCP和
UDP
协议# 传输层协议 TCP 和
UDP
的应用场景 要
发送
的内容多,需要将
发送
的内容分成多个数据
包
发送
(TCP) 要
发送
的内容少,一个数据
包
就能
发送
全部内容(
UDP
)# 传输层协议和应用层协议之间的关系 传输层协议加一个端口号来标识一个应用层协议, 展示了传输层协议和应用层协议之间的关系# 使用TCP/IP筛选实现网络安全 防火墙设置与端口#
UDP
协议特点和报文格式
UDP
是无连接的:即
发送
数据之前不需要建立连接
UDP
使用尽最大努力交付:即不保证可靠交付,因此主机不需要维持复杂的连接状态表# TCP 协议特点和报文格式先连接后释放;点对点;可靠传输;全双工通信;面向数据流七项标记位停止等待协议与改进的停止等待协议滑动窗口技术详解:确认Seq与选择确认SACK 超
时
重传
时
间:查询计算与自动调整 流量
控制
功能:点对点的流量
控制
拥塞
控制
:相对整体网络环境而言;慢开始算法和拥塞避免算法 改进的拥塞
控制
:快重传和快恢复 三次握手建立TCP连接,四次挥手释放连接。# TCP 协议面临的攻击 SYN 攻击:捏造的源地址; LAND攻击:自己就是源地址# 通过抓
包
工具,查看以上报文格式# 习题详解
udp
如何实现可靠性传输?
udp
如何实现可靠性传输? 一、
udp
与 tcp 的区别: TCP(TransmissionControl Protocol 传输
控制
协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP
是 User Datagram Protocol,一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现
udp
可靠性传输,必须通过应用层来实现和
控制
。 二、TCP 如何实现可靠性传输: 可靠性: 应用数据被分割成 TCP 认为最适合
发送
的数据块。这和
UDP
UDP
分片与丢
包
,
UDP
真的比TCP高效吗?
根据
UDP
通信的有界性,在 buf 足够大的情况下,接收到的一定是一个完整的数据
包
,
UDP
数据在下层的分片和组片问题由 IP 层来处理,提交到
UDP
传输层一定是一个完整的
UDP
包
,那么 recvfrom(9000) 将返回 8000。对于一些多点通信的场景,如果采用有连接的 TCP,那么就需要和多个通信节点建立其双向连接,然后有
时
在 NAT 环境下,两个通信节点建立其直接的 TCP 连接不是一个容易的事情,在涉及 NAT 穿越的
时
候,
UDP
协议的无连接性使得穿透成功率更高.
图解TCP、
UDP
,流量
控制
,拥塞
控制
,一次看懂!
流量
控制
是为了让接收方能来得及接收,而拥塞
控制
是为了降低整个网络的拥塞程度利用滑动窗口机制可以很方便地在tcp连接上实现对
发送
方的流量
控制
TCP接收方利用自己的接收窗口的大小来限制
发送
方
发送
窗口的大小 慢开始 + 拥塞避免算法中,
发送
方把拥塞窗口cwnd又设置为1,并错误地启动慢开始算法,降低了传输效率服务器第一次收到客户端的 SYN 之后,就会处于 SYN_RCVD 状态,此
时
双方还没有完全建立其连接,服务器会把此种状态下请求连接放在一个队列里,我们把这种队列称之为半连接队列。服务器端的资源分配是在二次握
Qt
UDP
Socket丢
包
问题(实现百兆级
速率
无丢
包
)
项目场景: 使用QT下的
UDP
socket与伺服驱动进行通信,通过
udp
每62.5us
发送
512字节的数据到PC端中。bind绑定后,connect关联槽函数,在槽函数中死循环接收读取
发送
过来的数据,为了使用户界面不卡死,开启一条单独的线程运行接收的槽函数。 问题描述: 每62.5us
发送
512字节大概是66M的速度,PC端使用的是百兆网卡,要求在这个速度下持续运行8小
时
以上。demo运行
时
卡顿,严重数据传输过程中数据不
时
出现丢失的情况。查阅资料后发现window提供了接口可以将指定的线程绑定到特定的cpu
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章