そのため、Xamarin と .net を使用して iOS プロジェクトに uPNP を実装しています。ローカル デバイス (つまり、プログラムが実行されているデバイス) の有効なローカル IP アドレスを取得するのに苦労しています。
を使用しようとしましNetworkInterface.GetAllNetworkInterfaces()
たが、そのメソッドの Xamarin の実装にバグがあり、機能しません。
それで、私は周りを見回して、これを達成する簡単な方法を見つけました. 私は次のことを試しました:
IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());
上記は「ホストを解決できませんでした...」という例外をスローします (ここで、... はデバイス名です)。
したがって、デバイス名は取得されますが、解決できません。
このコードは、WPF アプリケーションのウィンドウの下で問題なく動作します。iPhone または iPad シミュレーターを備えた MAC で Xamarin Studio を使用すると、問題なく動作します。
ただし、MAC に実際の iPad デバイスでアプリを起動させようとすると、次の例外が発生します。
System.Net.Sockets.SocketException: /Developer/MonoTouch/Source/mono/mcs/class/System/System の System.Net.Dns.Error_11001 (System.String hostName) [0x00000] でホスト 'Charrison' を解決できませんでした。 Net/Dns.cs:298 at System.Net.Dns.hostent_to_IPHostEntry (System.String originalHostName、System.String h_name、System.String[] h_aliases、System.String[] h_addrlist) [0x00082] /Developer/MonoTouch/Source 内/mono/mcs/class/System/System.Net/Dns.cs:326 at System.Net.Dns.GetHostByName (System.String hostName) [0x0002a] in /Developer/MonoTouch/Source/mono/mcs/class/System /System.Net/Dns.cs:467 at System.Net.Dns.GetHostEntry (System.String hostNameOrAddress) [0x00061] /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/Dns.cs 内:System.Net.Dns.GetHostAddresses の 406 (System.String hostNameOrAddress) [0x00065] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/Dns.cs:432 at UpnpUI_iOS.DeviceViewController.startButton_TouchUpInside (System.Object sender, System.EventArgs e) [0x0008c] ] in /Users/engineering/Projects/UpnpUI_iOS/DeviceViewController.cs:83 at MonoTouch.UIKit.UIControlEventProxy.Activated () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIControl.cs:30 at at (ラッパーマネージドからネイティブ) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38DeviceViewController.startButton_TouchUpInside (System.Object sender, System.EventArgs e) [0x0008c] in /Users/engineering/Projects/UpnpUI_iOS/DeviceViewController.cs:83 at MonoTouch.UIKit.UIControlEventProxy.Activated () [0x00000] in /Developer/MonoTouch /Source/monotouch/src/UIKit/UIControl.cs:30 at at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (System.String[] 引数、System.String principalClassName、System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38DeviceViewController.startButton_TouchUpInside (System.Object sender, System.EventArgs e) [0x0008c] in /Users/engineering/Projects/UpnpUI_iOS/DeviceViewController.cs:83 at MonoTouch.UIKit.UIControlEventProxy.Activated () [0x00000] in /Developer/MonoTouch /Source/monotouch/src/UIKit/UIControl.cs:30 at at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (System.String[] 引数、System.String principalClassName、System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38Activated () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIControl.cs:30 at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs の MonoTouch.UIKit.UIApplication.Main (System.String[] args、System.String principalClassName、System.String delegateClassName) [0x0004c] の intptr) 38Activated () [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIControl.cs:30 at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs の MonoTouch.UIKit.UIApplication.Main (System.String[] args、System.String principalClassName、System.String delegateClassName) [0x0004c] の intptr) 38
/Users/engineering/Projects/UpnpUI_iOS/Main.cs:17 の UpnpUI_iOS.Application.Main (System.String[] args) [0x00008] で
Xamarin で .net を使用して iPad で実際に動作する、ローカル デバイスの有効な IP アドレスを取得するための優れた迅速な方法を誰かが知っている場合は、お知らせください。とても感謝しております。
有益な提案をお寄せいただきありがとうございます。