C# 获取当前ip地址Xamarin.Forms(跨平台)

C# 获取当前ip地址Xamarin.Forms(跨平台),c#,xamarin,cross-platform,ip-address,xamarin.forms,C#,Xamarin,Cross Platform,Ip Address,Xamarin.forms,如何获取Xamarin.Forms的当前ip地址(跨平台)?WifiManager我不能使用,也不能包含?尝试执行以下操作: public string MyIp; foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName())) { MyIp = "IP Adress: " + adress.ToString(); SettingsTab.IP_Adress = MyIp; break; }

如何获取Xamarin.Forms的当前ip地址(跨平台)?WifiManager我不能使用,也不能包含?

尝试执行以下操作:

public string MyIp;

foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
    MyIp = "IP Adress: " + adress.ToString();
    SettingsTab.IP_Adress = MyIp;
    break;
}
    public static string GetIPAddress()
    {
        var AllNetworkInterfaces = Collections.List(Java.Net.NetworkInterface.NetworkInterfaces);
        var IPAddres = "";
        foreach (var interfaces in AllNetworkInterfaces)
        {
            if (!(interfaces as Java.Net.NetworkInterface).Name.Contains("eth0")) continue;

            var AddressInterface = (interfaces as Java.Net.NetworkInterface).InterfaceAddresses;
            foreach (var AInterface in AddressInterface)
            {
                if(AInterface.Broadcast != null)
                    IPAddres = AInterface.Address.HostAddress;
            }
        }
            return IPAddres;
    }
或者试试这个:

var IpAddress = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault();

if (IpAddress != null)
{
    return IpAddress.ToString();
}

您必须为自己编写一个依赖性服务,或者使用Xamarin.Forms.Labs.Services.Resolver并为每个平台编写一个平台依赖性服务,然后使用平台独立接口调用它。这需要
AddressFamily.InterNetwork
地址。如果您有两个连接,即UWP上的WiFi和以太网,该怎么办?你怎么知道正在使用的是哪一个?仅仅抓住第一个就打破并不能保证你使用的是正确的