gpt4 book ai didi

ios - 调用 Dns.GetHostAddresses(Dns.GetHostName()) 时无法解决主机异常

转载 作者:行者123 更新时间:2023-12-01 19:09:07 27 4
gpt4 key购买 nike

因此,我正在使用 Xamarin 和 .net 在 iOS 项目中实现 uPNP。我一直在努力为本地设备(即运行程序的设备)获取有效的本地 IP 地址。

我已尝试使用 NetworkInterface.GetAllNetworkInterfaces(),但 Xamarin 对该方法的实现存在一个错误,它不起作用。

所以,我环顾四周,找到了一个简单的方法来完成这个。我尝试了以下方法:

IPAddress[] hostAddresses = Dns.GetHostAddresses(Dns.GetHostName());

以上抛出“无法解析主机...”异常(其中...是我的设备名称)。

所以它确实获取了我的设备名称,但随后无法解析它。

此代码在 WPF 应用程序的 Windows 下工作得很好。在带有 iPhone 或 iPad 模拟器的 MAC 上使用 Xamarin Studio 效果很好。

但是,当我尝试让 MAC 在我的实际 iPad 设备上启动该应用程序时,出现以下异常:

System.Net.Sockets.SocketException: Could not resolve host 'Charrison' at System.Net.Dns.Error_11001 (System.String hostName) [0x00000] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.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] in /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] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/Dns.cs:406 at System.Net.Dns.GetHostAddresses (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 (wrapper managed-to-native) 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:38
at UpnpUI_iOS.Application.Main (System.String[] args) [0x00008] in /Users/engineering/Projects/UpnpUI_iOS/Main.cs:17

如果有人知道使用 .net 和 Xamarin 在我的 iPad 上实际工作的本地设备获取有效 IP 地址的好方法,请告诉我。我真的很感激。

提前感谢您提出有用的建议。

最佳答案

forums 中被 Mike Bluestein 盗走

foreach (var netInterface in NetworkInterface.GetAllNetworkInterfaces()) {
if (netInterface.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
netInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet) {
foreach (var addrInfo in netInterface.GetIPProperties().UnicastAddresses) {
if (addrInfo.Address.AddressFamily == AddressFamily.InterNetwork) {
var ipAddress = addrInfo.Address;

// use ipAddress as needed ...
}
}
}
}

关于ios - 调用 Dns.GetHostAddresses(Dns.GetHostName()) 时无法解决主机异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17885130/

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