【Unity学习】Unity获取Android手机局域网(WIFI)IP

编写.java文件,导入Unity。
unity版本必须大于2018.2及以上。

//JAVA
package com.test1;
 
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 

 
public class test {
    
    
    //匹配C类地址的IP
    public static final String regexCIp = "^192\\.168\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";
    //匹配A类地址
    public static final String regexAIp = "^10\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";
    //匹配B类地址
    public static final String regexBIp = "^172\\.(1[6-9]|2\\d|3[0-1])\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)\\.(\\d{1}|[1-9]\\d|1\\d{2}|2[0-4]\\d|25\\d)$";
 
 
    public  String getHostIp() {
    
    
        String hostIp;
        Pattern ip = Pattern.compile("(" + regexAIp + ")|" + "(" + regexBIp + ")|" + "(" + regexCIp + ")");
        Enumeration<NetworkInterface> networkInterfaces = null;
        try {
    
    
            networkInterfaces = NetworkInterface.getNetworkInterfaces();
        } catch (SocketException e) {
    
    
            e.printStackTrace();
        }
        InetAddress address;
        while (networkInterfaces.hasMoreElements()) {
    
    
            NetworkInterface networkInterface = networkInterfaces.nextElement();
            Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
    
    
                address = inetAddresses.nextElement();
                String hostAddress = address.getHostAddress();
                Matcher matcher = ip.matcher(hostAddress);
                if (matcher.matches()) {
    
    
                    hostIp = hostAddress;
                    return hostIp;
                }
 
            }
        }
        return null;
    }
}

编写Unity脚本:

using UnityEngine;
using UnityEngine.UI;


public class GetIPAddress : MonoBehaviour
{
    
    
    public Text text;
    // Start is called before the first frame update
    void Start()
    {
    
    
        AndroidJavaObject jo = new AndroidJavaObject("com.test1.test");
        AndroidJavaClass act = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        text.text = "IP:" + jo.Call<string>("getHostIp") + "  端口号:50000";
    }
}

打包发布Android端进行测试:
在这里插入图片描述

参考:Unity获取Android手机局域网(WIFI)内网ip,超级简单述

猜你喜欢

转载自blog.csdn.net/dong89801033/article/details/118101754