2012-07-06 84 views
4

在MonoDevelop中創建MonoDevelop應用程序,該應用程序針對OS X上的Mono/.NET 4.0,用作TCP套接字服務器。如何獲取Mac上的Mono中的網絡接口列表?

下面的代碼行失敗(您通常對事物的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)內不工作 - 他們都是有針對性的一樣,單聲道,.NET 4.0與SystemSystem.Net v4.0.0.0相同的參考,有什麼區別?

+1

可能是一個古老的Mono,對我來說工作得很好。 – 2012-07-06 02:37:10

+1

我發現這不適用於OSX上的Mono 3.0.6,(意外的錯誤:System.EntryPointNotFoundException:CreateNLSocket)。任何其他人有問題? – penderi 2013-04-29 15:26:47

回答

1

如果您需要調用低級OS X API /框架,MonoMac是您的最佳人選。但是,並非所有OS X Frameworks都綁定在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