unity 2018獲取本地ip 問題,ipaddress
阿新 • • 發佈:2018-12-21
Network.Player.ipAddress這個API在Unity2018被移除了
用如下程式碼
using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using UnityEngine; public class IPManager { public static string GetIP(ADDRESSFAM Addfam) { //Return null if ADDRESSFAM is Ipv6 but Os does not support itif (Addfam == ADDRESSFAM.IPv6 && !Socket.OSSupportsIPv6) { return null; } string output = ""; foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) { #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN NetworkInterfaceType _type1= NetworkInterfaceType.Wireless80211; NetworkInterfaceType _type2 = NetworkInterfaceType.Ethernet; if ((item.NetworkInterfaceType == _type1 || item.NetworkInterfaceType == _type2) && item.OperationalStatus == OperationalStatus.Up) #endif {foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) { //IPv4 if (Addfam == ADDRESSFAM.IPv4) { if (ip.Address.AddressFamily == AddressFamily.InterNetwork) { output = ip.Address.ToString(); Debug.Log("啊" + output); } } //IPv6 else if (Addfam == ADDRESSFAM.IPv6) { if (ip.Address.AddressFamily == AddressFamily.InterNetworkV6) { output = ip.Address.ToString(); } } } } } return output; } } public enum ADDRESSFAM { IPv4, IPv6 }
呼叫
string ipv4 = IPManager.GetIP(ADDRESSFAM.IPv4);