我正在尝试用c#编写BOOTP服务器。
我正在接收并解析来自客户端的BOOTP数据包,我需要回复我的服务器IP地址。
问题是:
有没有办法找出收到UDP数据包的适配器?
答案 0 :(得分:2)
有几种可能的方法可以做到这一点。在每个物理接口上的每个IP上绑定一个单独的套接字,然后您将始终知道数据包到达的接口。您也可以尝试将IP_RECVIF标志与recvmsg套接字函数一起使用,但我不知道Windows是否支持这种功能。 Steven在Unix网络编程的第22.2节和第22.6节中有例子。您可以将SIOCGIFCONF标志与ioctl一起使用以获取计算机上的接口列表。 UNP第17.6节有一个示例程序。如果c#不允许您访问这些功能,但是在Windows上支持它们,您可以编写一个简单的C程序来收集和更新接口/ IP信息,然后使用mmap在C#程序和接口枚举器之间共享一个内存区域。