可以告诉我吗?谢谢!
[email protected]

解决方案 »

  1.   

    可以告诉我吗?谢谢!
    [email protected]
      

  2.   

    我所知道的方法是:1、使用虚拟设备驱动程序实现。Win9x下用VXD,WinNT下用SYS,绑定代理服务器上的网卡,得到每一个包的大小和IP信息(包括协议等等),就可以实现网络计费。
    2、使用SPI(服务提供者接口)开发一个分层服务提供者。可以得到每一个Socket调用的包信息。同样的道理,分析IP信息和包大小既可以实现网络计费。这种方法没有操作系统的局限,可以在Win9x,WinNT和Win2000下实现。下面详细讨论:(1) 关于VXD方面:有一个开发好的叫VPacket东西,可以实现在Win9x下的网络计费。源码我有。如果自己写的话,比较复杂。VPacket的原理是绑定在网卡上,网卡在收到包的时候会复制一个一样的包给这个Vxd。由于是复制分发,所以它无法做到过滤包,只能得到包。换句话说,就是不能用来做防火墙,做个计费到是戳戳有余了。还有一种就是最理想的,用中间层驱动程序。Win9x下提供了Hook NDIS服务的函数可以直接用,有关资料见Win98DDK。
    (2) 关于Sys方面:在2000下面,目前我知道的也有一个类似Vpacket的东西。也可以用中间层驱动程序。有关资料当然是Win2000DDK了.(3) 第三种是最简单的,但是有一个问题,即它的只能做到Winsock API这一层,就是只有当应用程序调用Winsock API时,你才能得到传送的包。如果一个包只是经过你的网卡,不与任何应用发生关系,那么你就得不到这个包了。具体的方法在<Windows网络编程技术〉这本书中有说明,但是它是一个Dll,而且要用C或者C++做,然后共享内存与Delphi应用程序通讯。  以上是我所知道的关于网络计费方面的内容,关于这些的资料我虽然都有,但都很零散,没有办法汇总。如果那位朋友想要的话,请告诉我需要哪一方面以及有什么要求。
      还有别的朋友知道其它的方法也请贴出来,谢谢!