我刚收到这个UDP数据包的适配器是什么?

我正在尝试用c#编写BOOTP服务器。

我正在从客户端接收并解析BOOTP数据包,我需要回复我的服务器IP地址。

问题是:

  • 计算机可以有多个网络适配器
  • 客户端还没有IP地址

有没有办法找出接收UDP数据包的适配器?

有几种可能的方法可以做到这一点。 在每个物理接口上的每个IP上绑定一个单独的套接字,然后您将始终知道数据包到达的接口。 您也可以尝试将IP_RECVIF标志与recvmsg套接字函数一起使用,但我不知道Windows是否支持它。 Steven在Unix网络编程的第22.2节和第22.6节中有例子。 您可以将SIOCGIFCONF标志与ioctl一起使用以获取计算机上的接口列表。 UNP第17.6节有一个示例程序。 如果c#不允许您访问这些function,但是在Windows上支持它们,您可以编写一个简单的C程序来收集和更新接口/ IP信息,然后使用mmap在C#程序和接口枚举器之间共享一个内存区域。

Interesting Posts