获取当前IP地址Xamarin.Forms(跨平台)

7
如何在Xamarin.Forms中获取当前IP地址(跨平台)?我不能使用WifiManager,也无法包含WifiManager。

你需要编写一个依赖服务或使用Xamarin.Forms.Labs.Services.Resolver,并为每个平台编写一个平台相关的服务,然后使用平台无关的接口来调用它。 - Sten Petrov
3个回答

8
public string MyIp;

foreach (IPAddress adress in Dns.GetHostAddresses(Dns.GetHostName()))
{
    MyIp = "IP Adress: " + adress.ToString();
    SettingsTab.IP_Adress = MyIp;
    break;
}

这里使用 AddressFamily.InterNetwork 地址。 - Eli
3
如果您在UWP上有两个连接,例如WiFi和以太网,您该如何知道哪一个正在被使用?只靠获取第一个连接并不保证您正在使用正确的连接。 - pixel

8
或者尝试这个:
var IpAddress = Dns.GetHostAddresses(Dns.GetHostName()).FirstOrDefault();

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

2

尝试执行以下操作:

    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;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接