【问题标题】:C# xamarin- How to get the ip address of the deviceC# xamarin-如何获取设备的ip地址
【发布时间】:2021-04-04 01:02:07
【问题描述】:

我需要在不访问外部站点的情况下获取设备的ipv4地址。

IPAddress[] LocalIp = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress iP in LocalIp)
{
    if (iP.AddressFamily == AddressFamily.InterNetwork)
    {
        MachineIP = iP;
    }
}

返回本地 IP 但我需要知道设备在 3G 网络上的公共 IP 以及连接到 wi-fi 时的 wi-fi 的公共 IP。有人有什么建议吗?

【问题讨论】:

    标签: xamarin xamarin.forms ip ipv4


    【解决方案1】:

    但我需要知道设备在 3G 网络上的公共 IP 以及连接到 wi-fi 时的 wi-fi。有人有什么建议吗?

    如果您想在连接到 Wi-Fi 时获取设备的 IP 地址,可以尝试以下代码:

    首先,在Form共享代码中定义接口。

     public interface IPAddressManager
    {
        string GetIPAddress();
    }
    

    Android平台设备连接wifi时获取ip地址。

    [assembly: Dependency(typeof(GetAddressManager))]
    namespace demo3.Droid
    {
     public  class GetAddressManager : IPAddressManager
    {
        string ipAddress;
        public string GetIPAddress()
        {
            WifiManager wifiMgr = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
            WifiInfo wifiInfo = wifiMgr.ConnectionInfo;
            int ip = wifiInfo.IpAddress;
            ipAddress = Formatter.FormatIpAddress(ip);
            return ipAddress;
        }
    }
    }
    

    使用 DependencyService 获取 IP 地址。

     private void btn1_Clicked(object sender, EventArgs e)
        {
            string ip = DependencyService.Get<IPAddressManager>().GetIPAddress();
        }
    

    【讨论】:

    • 感谢您的回答,但不是我的帮助。使用这种方法,我总是得到本地 IP 而不是公共 ip。
    • 公共字符串 GetIP() { var client = new HttpClient(); var response = client.GetAsync("api.ipify.org/?format=json"); var resultString = response.Result.Content.ReadAsStringAsync(); string[] ipsplit = resultString.Result.Split('"'); return ipsplit[3];} 我不想使用它,也不想为我的应用程序创建服务器,仅用于解析 IpEndpoint。
    • @Sisma 你提供的code可以获取公网ip吗?但是你还需要其他方式吗?
    • 是的,当我连接到 3g 电话网板时,它给了我公共 ip,对于 Wi-Fi 情况,我会联系为我解决 ip 的服务器,并给出 if 条件通过 wifi 管理器。如果有一种方法可以在没有联系和外部服务器的情况下检索公共 IP,那么很高兴知道它。
    • @Sisma - 你找到解决方案了吗?在不连接任何 URL 的情况下获取公共 IP 地址?
    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 2013-06-29
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多