如何在Mac上的Mono中获得网络接口列表?

时间:2012-07-06 01:50:58

标签: c# mono monomac

在MonoDevelop中创建一个Mono控制台应用程序,针对OS X上的Mono / .NET 4.0,作为TCP套接字服务器。

以下代码行失败(通常在Windows方面使用):

var interfaces = NetworkInterface.GetAllNetworkInterfaces();

...错误System.DllNotFoundException: iphlpapi.dll

最好我可以说这只在Windows和Linux上受支持。但是,似乎还有另一种为Mac设计的方法:

System.Net.NetworkInformation.MacOsNetworkInterface.GetAllNetworkInterfaces();

虽然MonoDevelop似乎认识到它,但它无法编译The type or namespace 'MacOsNetworkInterface' does not exist in the namespace 'System.Net.NetworkInformation'.错误。已经有对System和System.Net的引用。

我错过了什么?

修改:发现NetworkInterface.GetAllNetworkInterfaces()在MonoDevelop中创建新的C#控制台应用时起作用,但在现有项目(NetworkComms.net)内无效 - 他们两者都是相同的,Mono,.NET 4.0与SystemSystem.Net v4.0.0.0的引用相同,有什么区别?

1 个答案:

答案 0 :(得分:1)

如果您需要调用低级OS X API /框架,MonoMac是您的最佳候选者。但是,并非所有OS X框架都绑定在MonoMac中。从Apple Developer文档中,我认为您需要SystemConfiguration API中当前不受MonoMac约束的函数。

但是你总是可以使用DllImport自己为缺失的函数创建一个绑定。我最近使用DiskArbitration Framework(也没有绑定)完成它,您可以将其用作参考:http://git.gnome.org/browse/banshee/tree/src/Backends/Banshee.Osx/Banshee.Hardware.Osx/LowLevel?id=136fcbcc2e0421aba6be79306dc111fdabb3c749