阅读:2251回复:8
怎样用Packet提高发送速度?
我用Packet例子发包,发现每秒最多只能发100个包,这简直是不可以忍受,各位大侠帮忙,当然是在不增加网卡的情况下提高啊。
发送环境:Windows 2000, 赛杨466,Legend DFE-530TX PCI Fast Ethernet Adapter。 我的目标是10000个包每秒,不知是不是可以达到。 |
|
沙发#
发布于:2002-04-13 17:35
谢谢你的回答。:) SetTimer在NT下最快是10ms。跟CPU、网卡有关系,但效果不会相差很大。我只发不收,另外一台机器确实收到了我的包。 我在PIII 700,C300,C533的机器上都测试过,速度相差不大。 |
|
板凳#
发布于:2002-04-13 16:54
谢谢你的回答。:)
我曾经尝试去掉Sleep(10)发现不能发包,前些天还专门贴个帖子问呢,后来就设成Sleep(0)就行了。不过后来为了控制发包程序,使用了SetTimer,好像是这的问题。 请问你的发包的环境,比如机器CPU,另外和网卡的性能好坏是否有关系? 这道题分给完了,不知能不能再给你加分,我试一下!呵呵。 |
|
地板#
发布于:2002-04-12 21:55
我用过packet发包,在100M的网卡上可以发 13000包/秒,在10M的卡上可以8000-9000包/秒。没有出现任何问题。
DDK里带的例程里有一个Sleep(10)的语句,所以只能100包/秒,去掉就行了!!如果你只要发,不要收是一点都没问题的!! 我是在一个进程里面开一个专门发包的线程,它“死循环”,用一个标志来控制它的终止。 |
|
地下室#
发布于:2002-04-12 15:11
有一个问题,如果连续使用WriteFileEx发送,很多IRP必定会在协议层排队等候处理,会不会出现IRP队列溢出的现象,如果会,如何知道IRP队列已满?先谢了。 可以在应用层做个计数器count,连续发送,一直continue,到某个数值如100,而在回调函数进行count--; 另外,我还是坚持发送是非常快的,主要是接受的问题! |
|
|
5楼#
发布于:2002-04-12 13:59
看你的样子是想做一个路由器或者防火墙测试的东东了,有一个专门的设备来做这个,它是用硬件卡来实现发包的,所以,我觉得你无论如何是无法达到你想要的这个结果的,要不然那个破东西也卖不了10多万USD一台了。
:P :P :P |
|
|
6楼#
发布于:2002-04-12 13:12
有一个问题,如果连续使用WriteFileEx发送,很多IRP必定会在协议层排队等候处理,会不会出现IRP队列溢出的现象,如果会,如何知道IRP队列已满?先谢了。
|
|
7楼#
发布于:2002-04-12 12:25
谢谢,我试一下。
|
|
8楼#
发布于:2002-04-11 11:49
网卡一般支持多包发送,你在应用层上试下异步发送,在应用层上调用WriteFileEx!
当然我以前是在IMD上用过,其实主要是接受速度的问题,真正发送还是很快的! |
|
|