XDT
XDT
驱动牛犊
驱动牛犊
  • 注册日期2002-10-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1753回复:6

怎么在大量数据传输的网络中像NETMON一样统计网络中的数据

楼主#
更多 发布于:2002-10-09 22:31
我用是的DDK的PACKET,在应用层用多线程分析数据(只有一个读线程)还是会丢一半左右的包(一共才5000多个包)。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2002-10-10 10:46
驱动里面做缓冲呢?
还有,你应用层读是怎么读的?读完一个立马读下一个,还是用Timer去读?
XDT
XDT
驱动牛犊
驱动牛犊
  • 注册日期2002-10-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-10 19:07
循环读,多线程处理.
michaelg
驱动牛犊
驱动牛犊
  • 注册日期2002-06-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-11 21:25
你应该在驱动中用队列实现,保存受到的所有消息,并根据依据应用层传送的buffer大小传送信息
HuYuguang
论坛版主
论坛版主
  • 注册日期2001-04-25
  • 最后登录2013-04-29
  • 粉丝3
  • 关注1
  • 积分92分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2002-10-11 21:31
循环读,多线程处理.


你一定是同步读,或者是一次一次的异步读。

其实并不需要用多复杂的技术,只要能够保证在packet的
irp队列一直不空,就基本上不会丢包。因为百M的网出来
这么多年了,cpu速度加快了很多。
不再回忆从前,我已经生活在幸福当中。
XDT
XDT
驱动牛犊
驱动牛犊
  • 注册日期2002-10-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-16 20:49
怎么保证IRP不空?循环读?
不过今天用ICE看输出信息的时候发现注册的一个函数可以在收到包后执行(名字不记得了)
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-17 09:32
怎么保证IRP不空?循环读?
不过今天用ICE看输出信息的时候发现注册的一个函数可以在收到包后执行(名字不记得了)


开两个队列
一个是IRP队列
一个是接收数据队列
添加任一一队列时都检查两队列是不是为空
如果两者都不为空,那么就处理数据。
如果其中任一一个为空就等。
触发时机为添加任一一队列时

IRP可以是IRP_MJ_READ,IRP_MJ_DEVICEIOCONTROL
该方面前提条件是使用异步IO
看一下有关SDK READFILE,DEVICEIOCONTROL函数中关于对OVERLAPPER的描述.
我思故我在,脑袋不会坏.
游客

返回顶部