【问题标题】:Get current ip-address Xamarin.Forms ( Cross Platform)获取当前 IP 地址 Xamarin.Forms(跨平台)
【发布时间】:2015-01-12 14:34:33
【问题描述】:

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

【问题讨论】:

  • 你必须自己写一个依赖服务或者使用 Xamarin.Forms.Labs.Services.Resolver 并为每个平台编写一个平台相关的服务,然后使用平台无关的接口来调用它

标签: c# xamarin cross-platform ip-address xamarin.forms


【解决方案1】:
public string MyIp;

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

【讨论】:

  • 这需要AddressFamily.InterNetwork 地址。
  • 如果您有 2 个连接,即 UWP 上的 WiFi 和以太网怎么办?你怎么知道哪个是正在使用的?仅仅抓住第一个就打破并不能保证您使用的是正确的
【解决方案2】:

或者试试这个:

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

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

【讨论】:

    【解决方案3】:

    尝试这样做:

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

    【讨论】:

      猜你喜欢
      • 2016-12-04
      • 2018-10-22
      • 1970-01-01
      • 2017-02-10
      • 2012-03-17
      • 2013-05-31
      • 2016-12-05
      相关资源
      最近更新 更多