WINAPI:CreateFile到网络适配器读取原始字节

时间:2010-10-11 03:38:10

标签: c winapi

是否可以读取类似于串行端口的网络适配器?我知道可以使用CreateFile WINAPI函数读取串行端口。是否有类似的方法从网络适配器读取原始字节?

我知道WiFi/Network Function,但WiFi示例相当稀疏。

2 个答案:

答案 0 :(得分:1)

如果要捕获原始数据包,则需要WinPCAP之类的支持驱动程序来执行此操作。

答案 1 :(得分:1)

使用WSASocket()(或socket()创建套接字时,您可以传递SOCK_RAW标志,因为您的品味正在运行)。这在MSDN上的TCP/IP Raw Sockets下进一步详细描述。

从该页面 -

  

应用程序创建套接字后   SOCK_RAW类型,这个插座可能是   用于发送和接收数据。所有   在套接字上发送或接收的数据包   类型SOCK_RAW被视为   未连接套接字上的数据报。

值得注意的是,微软在Windows XP SP2之后削弱了他们的原始套接字实现;有关详细信息,请参阅MSDN页面Limitations on Raw Sockets:

部分
  
      
  • 无法通过原始套接字发送TCP数据。
  •   
  • 无法通过raw发送具有无效源地址的UDP数据报   插座。
  •   
  • 不允许使用原始套接字调用绑定函数。
  •   

如果这些限制过于严格,您可以回退到之前推荐的winpcap库。