unity获取ip地址并且返回详细归属地信息

本地内网ip的获取

string ip = Network.player.ipAddress;
Debug.Log("ip:"+ ip);

外网ip的获取

    IEnumerator GetIp()
    {
        WWW w = new WWW(@"http://icanhazip.com/");//借助第三方库返回外网IP
        yield return w;
        Debug.Log(w.text);
    }

2020.6.4修正:最近一个项目用到了http://icanhazip.com/这个ip查询库,发现返回的时而是ipv4,时而是ipv6,然后我测试了一下,原来是现在把这个分细了,ipv4现在用的是http://ipv4.icanhazip.com/,ipv6用的是http://ipv6.icanhazip.com/,至于老链接就随缘了。

返回详细归属地信息

    IEnumerator IpDemand()
    {
        WWW w = new WWW(@"http://icanhazip.com/");
        //先获取外网IP
        yield return w;
        //通过淘宝IP的第三方库获取IP的详细信息
        WWW www = new WWW(@"http://ip.taobao.com/service/getIpInfo.php?ip="+w.text);
        yield return www;
        if (www.error != null)
            print("error is login:" + www.error);
        else
            Debug.Log(www.text);
    }

下面介绍一下淘宝IP的相关

 

    1. 请求接口(GET): (注意:ip地址的字符串外面没有方括号)
      http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串] 

                     格式实际为http://ip.taobao.com/service/getIpInfo.php?ip=XXX.XXX.XXX.XXX)
  2. 响应信息: 
      (json格式的)国家 、省(自治区或直辖市)、市(县)、运营商 
  3. 返回数据格式: (Json格式)
   {

    "code":0,

    "data":{

        "ip":"210.75.225.254",

        "country":"\u4e2d\u56fd",

        "area":"\u534e\u5317", 

        "region":"\u5317\u4eac\u5e02",

        "city":"\u5317\u4eac\u5e02",

        "county":"",

        "isp":"\u7535\u4fe1", 

        "country_id":"86",

        "area_id":"100000",

        "region_id":"110000",

        "city_id":"110000", 

        "county_id":"-1",

        "isp_id":"100017"

               }

           } 

   其中code的值的含义为,0:成功,1:失败。

 

你可能感兴趣的:(Unity)