guocaijian
驱动牛犊
驱动牛犊
  • 注册日期2005-04-06
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分137分
  • 威望21点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1972回复:3

ndisuio怎么保证发送多少数据包就能接收多少不丢失

楼主#
更多 发布于:2005-06-26 21:19
  在中间层驱动注册设备对象直接与应用程序通信,驱动里面接收与发送都仿照2000DDK的packet例子,应用程序仿照XP_DDK的ndisuio,循环发送循环接收ReadFile,但是发送1000个数据包只能收到490个,可见发送比接收快,请问怎么保证发送多少就能接收多少?ndisuio是怎么保证的?

最新喜欢:

wingmanwingma...
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-06-27 13:52
1。你还是要给队列存放的数据包,设置一个上限,超过了以后,数据包就要丢弃了
2。你上层应用程序,开一个线程,专门抓包,缓存,另外再开线程处理数据,以现在cup的处理速度,
对于百兆数据包,应该能够处理的过来吧。
guocaijian
驱动牛犊
驱动牛犊
  • 注册日期2005-04-06
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分137分
  • 威望21点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-26 23:01
谢谢zhaock的指导!!给了我不少启发!!我要分段传输很大很大的数据,实验里读总是比发送慢,这样队列不是越来越大吗?太大了内存不会崩吗?
我想到一个方法是每收到一个包则反发一个返回包,发送方收到返回包后才开始发下一个分段包,这样行吧?可是速度会慢,难啊!
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-06-26 21:46
packet 没有用缓存,当有包来的时候,如果上层应用程序没有调用ReadFile,比如前一个包还没有处理完,就将包抛弃了.而ndisuio,不管上层应用程序有没有调用ReadFile,都会把包先放到一个队列里去.把这个队列开大一点,一般就不会丢包了
游客

返回顶部