Unity 获取手机IP地址

Unity 获取手机IP地址

IP地址分为IPV4和IPV6,一般说IP地址指的是IPV4的地址。

运行日志:
在这里插入图片描述

代码如下:

using System;
using UnityEngine;
using System.Net;
using System.Net.Sockets;

public class GetIPAddressTools : MonoBehaviour
{
    void Start()
    {
        Debug.LogError("GetLocalIPv4:" + GetLocalIPv4());
        Debug.LogError("GetLocalIPv6:" + GetLocalIPv6());
    }

    // IPV4
    public static string GetLocalIPv4()
    {
        string ipAddress = "";
        try
        {
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    ipAddress = ip.ToString();
                    break;
                }
            }
        }
        catch (Exception e)
        {
            Debug.LogError("IP 获取失败");
        }
        return ipAddress;
    }

    // IPV6
    public static string GetLocalIPv6()
    {
        string ipAddress = "";
        try
        {
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetworkV6)
                {
                    ipAddress = ip.ToString();
                    break;
                }
            }
        }
        catch (Exception e)
        {
            Debug.LogError("IP 获取失败");
        }
        return ipAddress;
    }
}
Unity获取Android设备的本地IP地址,你需要借助Unity的插件或者外部工具,因为Unity引擎本身并不直接提供获取设备详细网络信息的功能。一种常见的做法是使用外部库,如ThirdParty.NET,它封装了Android SDK中的网络功能。 首先,你需要在Unity项目中引入ThirdParty.NET或者其他类似功能的插件,然后按照插件文档的指示集成到项目中。这里是一个大概的步骤: 1. **下载插件**:从GitHub或其他平台下载ThirdParty.NET或类似的Android网络访问插件。 2. **导入库**:将插件解压并将其AssetBundle文件导入到你的Unity项目中,通常在Assets/Plugins/Android目录下。 3. **启用插件支持**:在Android项目的build settings中,确保"Plugin Compatibility"选项设置为"Editor scripting disabled"。 4. **使用API**:在Unity脚本中,找到插件提供的获取IP地址的方法,例如`GetLocalIpAddress()`或类似的函数。 下面是一个简单的示例代码(假设你已经导入了插件并创建了一个名为`AndroidNetworking`的类): ```csharp using Android.Net; using UnityEngine; public class NetworkManager : MonoBehaviour { public static string GetLocalIpAddress() { var context = Application.Context; if (context == null) return ""; var ipAddress = ""; try { var inetProperties = (ConnectivityManager)context.GetSystemService(Context.CONNECTIVITY_SERVICE); var activeNetworkInfo = inetProperties.ActiveNetworkInfo; if (activeNetworkInfo != null && activeNetworkInfo.IsConnected) { var info = inetProperties.GetActiveNetworkInfo(); if (info != null) { var addresses = info.GetAdditionalAddresses(); foreach (var address in addresses) { if (address.AddressFamily == AddressFamily.InterNetwork) { ipAddress = address.ToString(); break; } } } } } catch (Exception e) { Debug.LogError("Failed to get IP: " + e.Message); } return ipAddress; } } ``` 然后在Unity编辑器中调用这个静态方法获取IP地址: ```csharp string ipAddress = NetworkManager.GetLocalIpAddress(); Debug.Log("Local IP: " + ipAddress); ``` 请注意,这只是一个基本示例,实际应用可能需要处理更多的异常情况和兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小程小程,永不消沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值