请问如何控制socket的数据传输速率?

gypb 2003-10-30 10:51:34
请问如何控制socket的数据传输速率?
比如Server端控制一个Client端的数据发送和接收的速率,以平衡每个用户的带宽.
答对了,可以另外送分,我有15000分没用那
...全文
479 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hboy 2003-11-04
  • 打赏
  • 举报
回复
还得取消Nagle算法,Windows下通过设置TCP_NODELAY选项,否则并不能即时地控制每帧数据大小.
gypb 2003-11-04
  • 打赏
  • 举报
回复
我觉得 hboy(心血来潮) 的方法比较实际,实现起来也简单
flyhorseli 2003-10-31
  • 打赏
  • 举报
回复
hook socket函数调用,然后增加延迟可以试试,不过俺估计不是那么简单的。。。。

有很多事务协议和TCP是有关联的,恐怕还 是会引起问题。反正俺是没试过
esdn 2003-10-31
  • 打赏
  • 举报
回复
请问如何控制socket的数据传输速率?
socket接口底层的协议既有tcp,也有udp,你要在系统直接提供的socket上控制,可以考虑自己做一个控制方案,上面提到的"时间"方案也好,自己查字节数也行。别去改tcp。
zzwu 2003-10-31
  • 打赏
  • 举报
回复
...,来“宏观地”调控一段较时间内的数据发送量,这就不会有问题了。
netsys2 2003-10-30
  • 打赏
  • 举报
回复
简单的方法:

只能控制SERVER的发送,不能控制SERVER的接收(否则掉数据)。
SERVER对每个CLIENT计时和流量,超过标准的,延迟发送。

困难的方法:

能控制CLIENT的发送。
TCP协议中有个滑动窗口概念,就是限制双方能够接收数据的大小,只要你把它设小一点,对方就只能发慢点,发少点。

难点在于:需要自己实现TCP协议!自定义TCP包发送!没发用一些流行的API、控件什么的。
zzwu 2003-10-30
  • 打赏
  • 举报
回复
也就是,靠增加帧的发送间隔,而不是改变发送帧时所用的数据传输速率,来“宏观地”调整数据量,这不会有问题。
hboy 2003-10-30
  • 打赏
  • 举报
回复
TCP可控
除去协议头,每帧可发数据量是1446B ,你可测测每饱满帧要发多长时间,然后通过控制每帧的数据长度和发送每帧的间隔时间来控制数据量,可达效果.
netsys2 2003-10-30
  • 打赏
  • 举报
回复

难点在于:需要自己实现TCP协议!

TCP协议共有3000行。
zzwu 2003-10-30
  • 打赏
  • 举报
回复
我也怀疑能实现这样的事情。
网上通信,如果是利用RS232串行口,就可以通过baud率设置来改变数据发送和接收的速率了。
flyhorseli 2003-10-30
  • 打赏
  • 举报
回复
如果要自己在tcp上来修改恐怕困难。。。。不现实!
tcp的窗口是不能随便改的,里面涉及的东西太多。
xiaohyy 2003-10-30
  • 打赏
  • 举报
回复
如果能得到滑动窗口的大小就好办了,直接修改窗口大小来控制流量。

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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