我刚刚接收到哪个适配器?

时间:2010-02-15 16:57:38

标签: c# networking udp bootp

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

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

问题是:

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

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

1 个答案:

答案 0 :(得分:2)

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