QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1506|回复: 9

如何控制流量?

[复制链接]
发表于 2005-5-11 11:07:54 | 显示全部楼层 |阅读模式
代码里如何控制网络传输的流量?很常见的“最大下载速度”之类的?
发表于 2005-5-11 15:18:15 | 显示全部楼层
自己统计吧。好像socket系统调用里没有指定的参数
回复

使用道具 举报

 楼主| 发表于 2005-5-11 15:28:45 | 显示全部楼层
统计......
回复

使用道具 举报

发表于 2005-5-11 18:47:22 | 显示全部楼层
如果这样呢?
[code:1]
main_loop
{
    if( time_now>=T ){
        write(n_byte);//如果是用来发送数据的socket
        read(n_byte);//如果是用来接收数据的socket
    }
}
[/code:1]
如果在一个socket的buffer慢了后对方就会暂时停止发送数据,那么用这样的代码就可以实现最大速度为n_byte/T的控制……
回复

使用道具 举报

 楼主| 发表于 2005-5-12 09:37:51 | 显示全部楼层
对方怎么知道慢了?
回复

使用道具 举报

发表于 2005-5-12 22:18:07 | 显示全部楼层
不知道TCP协议是怎样的……
回复

使用道具 举报

 楼主| 发表于 2005-5-13 09:08:13 | 显示全部楼层
ㄟ(≧_≦)ㄏ 没办法 只好先不做这个了
回复

使用道具 举报

发表于 2005-5-13 10:54:57 | 显示全部楼层
服务器和客户端分别有缓冲区,如果客户端的缓冲区满了,但是用户没用即时的从缓冲区取走数据,那么反映给服务器的就是客户比较慢,请看tcp/ip中有关tcp流量控制的滑动窗口部分。
关于流量控制,主要是估计当前速度,调用sleep或者是设置定时器,控制从缓冲区取数据的速率,并且这个速率只能降低,不能够提高速率。
回复

使用道具 举报

发表于 2005-5-13 11:05:03 | 显示全部楼层
[quote:fc3913e070="sjinny"]不知道TCP协议是怎样的…… [/quote]

TCP是每发送一次数据,接收方要回发一条ack指令来确认收到。

发送方在一定时间内收不到ack,就要重发。
发送方在重发一定次数后仍然收不到ack,结束。

我记得TCP/IP里是没有流量控制的指令的,只能APP自己统计。
回复

使用道具 举报

发表于 2005-5-13 12:09:14 | 显示全部楼层
qos或自己统计。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 23:23 , Processed in 0.038447 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表