2012-04-06 48 views
12

Android用のMonoを使用してAndroidデバイスのローカルIPアドレスを取得しようとしていますが、失敗しています。ローカルIPアドレスの取得

私は完全かつコンパクトなフレームワークで使用するコードはこれです:M4Aの下

var iplist = (from a in Dns.GetHostAddresses(Dns.GetHostName()) 
       where a.AddressFamily == AddressFamily.InterNetwork 
       select a).ToArray(); 
LocalAddress = iplist[0]; 

、しかし、それは早期に倒れる - Dns.GetHostName()の呼び出しは

System.Net.Sockets.SocketException: An address incompatible with the requested protocol was used

で失敗します

M4AのDns.GetHostNameに関する既知の問題はありますか? M4Aを使用してローカルアドレスを取得する別の方法はありますか?

答えて

8

これはMono Socket実装の内部で発生した例外で、IPv6がサポートされているかどうかを判断しようとしているランタイムに関連しています(source here、この記事の時点で810行目)。

MonoでSocketを初めて使用しようとすると例外がスローされ、無視しても問題ありません。デバッガを使用して「すべてのスローされた例外を中断する」(コード清潔性を確保するために時折行う)を実行する場合は、特にSocketExceptionsをオフにするか、このブレークを過ぎて続行する必要があります。

+0

あなた自身の質問に答えていい仕事です。それを他の人たちと共有してくれてありがとう。 –

関連する問題