【问题标题】:WINAPI: CreateFile to Network Adapter to Read Raw BytesWINAPI:CreateFile 到网络适配器以读取原始字节
【发布时间】:2010-10-11 03:38:09
【问题描述】:

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

我知道WiFi/Network Functions,但 WiFi 示例相当少。

【问题讨论】:

  • @Kant:对不起,我不相信这是重复的,因为 1. 我不想在以太网帧中通信。 2.我希望有一个WINAPI的答案。
  • 那么请更精确。你到底想通过什么来沟通?

标签: c winapi


【解决方案1】:

您可以在使用WSASocket()(或socket(),根据您的喜好)创建套接字时传递SOCK_RAW 标志。这在 MSDN 上的TCP/IP Raw Sockets 下有更详细的描述。

从那个页面——

一旦应用程序创建了一个套接字 SOCK_RAW 类型的,这个套接字可能是 用于发送和接收数据。全部 在套接字上发送或接收的数据包 SOCK_RAW 类型的被视为 未连接的套接字上的数据报。

值得注意的是,微软在 Windows XP SP2 之后削弱了他们的原始套接字实现;详细信息在 Limitations on Raw Sockets: 部分的 MSDN 页面上进行了描述

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

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

【讨论】:

    【解决方案2】:

    如果您想捕获原始数据包,您需要像 WinPCAP 这样的支持驱动程序来执行此操作。

    【讨论】:

    • 您使用的是无线局域网吗?应始终支持以太网。
    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多