gpt4 book ai didi

c# - 如何在 Mac 上的 Mono 中获取网络接口(interface)列表?

转载 作者:行者123 更新时间:2023-11-30 12:49:32 26 4
gpt4 key购买 nike

在 MonoDevelop 中创建一个针对 OS X 上的 Mono/.NET 4.0 的 Mono 控制台应用程序,以用作 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 的引用。

我错过了什么?

编辑: 发现当我在 MonoDevelop 中创建新的 C# 控制台应用程序时,NetworkInterface.GetAllNetworkInterfaces() 确实有效,但在现有项目中无效(NetworkComms.net ) - 它们都针对相同的 Mono、.NET 4.0 以及对 SystemSystem.Net v4.0.0.0 的相同引用,有什么区别?

最佳答案

如果您需要调用低级 OS X API/框架,MonoMac是你最好的人选。然而,并非所有 OS X 框架都绑定(bind)在 MonoMac 中。从 Apple Developer 文档中,我认为您需要 SystemConfiguration API 中的函数目前不受 MonoMac 的约束。

但是您始终可以使用 DllImport 自己为缺少的函数创建绑定(bind)。我最近使用 DiskArbitration Framework(也未绑定(bind))完成了它,您可以将其用作引用:http://git.gnome.org/browse/banshee/tree/src/Backends/Banshee.Osx/Banshee.Hardware.Osx/LowLevel?id=136fcbcc2e0421aba6be79306dc111fdabb3c749

关于c# - 如何在 Mac 上的 Mono 中获取网络接口(interface)列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com