阅读:1971回复:3
ndisuio怎么保证发送多少数据包就能接收多少不丢失
在中间层驱动注册设备对象直接与应用程序通信,驱动里面接收与发送都仿照2000DDK的packet例子,应用程序仿照XP_DDK的ndisuio,循环发送循环接收ReadFile,但是发送1000个数据包只能收到490个,可见发送比接收快,请问怎么保证发送多少就能接收多少?ndisuio是怎么保证的?
|
|
最新喜欢:![]() |
沙发#
发布于:2005-06-26 21:46
packet 没有用缓存,当有包来的时候,如果上层应用程序没有调用ReadFile,比如前一个包还没有处理完,就将包抛弃了.而ndisuio,不管上层应用程序有没有调用ReadFile,都会把包先放到一个队列里去.把这个队列开大一点,一般就不会丢包了
|
|
板凳#
发布于:2005-06-26 23:01
谢谢zhaock的指导!!给了我不少启发!!我要分段传输很大很大的数据,实验里读总是比发送慢,这样队列不是越来越大吗?太大了内存不会崩吗?
我想到一个方法是每收到一个包则反发一个返回包,发送方收到返回包后才开始发下一个分段包,这样行吧?可是速度会慢,难啊! |
|
地板#
发布于:2005-06-27 13:52
1。你还是要给队列存放的数据包,设置一个上限,超过了以后,数据包就要丢弃了
2。你上层应用程序,开一个线程,专门抓包,缓存,另外再开线程处理数据,以现在cup的处理速度, 对于百兆数据包,应该能够处理的过来吧。 |
|