阅读:1889回复:5
怎么自如控制发送数据的流量!
我测试假如每次以MTU发数据,在SENDCOMPLETE后在发下一包,发送大约60M BPS,但是接受端撑不住,
我想控制发送的流量,比如30M,用什么好呢,定时器好象不行,我的数据是应用层过来的,因此需要考虑多个线程和驱动交互。 多谢建议 |
|
沙发#
发布于:2002-12-31 10:55
你是发送自己构造的数据包么?数据是从自己的应用程序下来的还是如何来的?
控制流量好像只能是自己将packet先保存起来,然后在根据一些条件来确定发送的时机发送了, |
|
|
板凳#
发布于:2002-12-31 12:46
数据包是自己构造,假如我从应用程序下来2M的纯数据,
我在驱动中分包发,但是驱动接受端无发连续接收这些数据, 因为网卡接收端还接收网络上很多其它数据,我怎么控制发端不发那么快,而是根据我想要的传输率来发,因为我有是要调整传输率,有什么好办法? |
|
地板#
发布于:2002-12-31 14:04
既然应用程序是你的,你可以在应用程序里面控制发包的速度,还有你这个数据是怎么给驱动的?通过一个缓冲区直接都给驱动程序了?还是通过MSTCP下去的?
你的驱动是在那一个成次上做的? |
|
|
地下室#
发布于:2003-01-01 21:49
我测试假如每次以MTU发数据,在SENDCOMPLETE后在发下一包,发送大约60M BPS,但是接受端撑不住, 为什么不可以? 你完全可以利用SENDCOMPLETE这个函数来做。 简单的做法是开一个计数器,并统计一分钟内的流量达到了限制就把发送的数据包挂起也就是不调用SENDCOMPLETE而返回STATUS_PENDING 等到下一个一秒去发,当然通常一秒做为单位太长了,一般都会以半秒或更小的值来做为单位。 通常情况下,对于TCPIP来说,STATUS_PENDING足以让他停下来代值到你调用SENDCOMPLETE函数,他才会发后继的数据包,对于你自己的协议程序我想也是应该这样做的吧。 |
|
|
5楼#
发布于:2004-06-03 13:53
我在passthru的ptsendcomplete函数中用计算器来试验,但结果是包发不出去。为什么呢?有研究这方面的来讨论一下!
|
|