| 
		      
                      
   上述程序中使用了著名的开放项目Winpcap(The Packet Capture and Network Monitoring Library for Windows)中的API,项目网址为:http://www.winpcap.org/。Winpcap是UNIX下的libpcap移植到 Windows下的产物,工作于驱动(Driver)层,能以很高的效率进行网络操作。其提供的packet.dll中包含了多个功能强大的函数,我们聊举几例: 
  LPPACKET PacketAllocatePacket(void); 
  如果运行成功,返回一个_PACKET结构的指针,否则返回NULL。成功返回的结果将会传送到PacketReceivePacket()函数,接收来自驱动的网络数据报。 
  LPADAPTER PacketOpetAdapter(LPTSTR AdapterName); 
  打开一个网络适配器。 
  VOID PacketCloseAdapter(LPADAPTER lpAdapter); 
  关闭参数中提供的网络适配器,释放相关的ADAPTER结构。 
  VOID PacketFreePacket(LPPACKET lpPacket); 
  释放参数提供的_PACKET结构。 
  BOOLEAN PacketGetAdapterNames(LPSTR pStr,PULONG BufferSize); 
  返回可以得到的网络适配器列表及描述。 
  BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); 
  从NPF驱动程序读取网络数据报及统计信息。 
  数据报编码结构: |bpf_hdr|data|Padding|bpf_hdr|data|Padding| BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET lpPacket, BOOLEAN Sync); 
  发送一个或多个数据报的副本。 
  我们用Depends工具打开pakcet.dll,如下图: 
  
  目前,网络剪刀手、网络执法官的软件在底层都用到了Winpcap。本节的例程代码中,看不到关于socket的内容,实际上已经在Winpcap中实现了。Winpcap的源代码可以直接在http://www.winpcap.org/下载。 
  (参考链接: http://dev.yesky.com/197/2672197.shtml) 
		      
		      
		      
		      
		      
		      
                      
		      
		        
		      共4页: 上一页 [1] [2] [3] 4 下一页 
		     |