|
@ -0,0 +1,55 @@ |
|
|
|
|
|
using System.Net; |
|
|
|
|
|
using System.Net.NetworkInformation; |
|
|
|
|
|
using System.Net.Sockets; |
|
|
|
|
|
|
|
|
|
|
|
public class IPGrabber{ |
|
|
|
|
|
|
|
|
|
|
|
public static string GetIP(ADDRESSFAM Addfam) |
|
|
|
|
|
{ |
|
|
|
|
|
//Return null if ADDRESSFAM is Ipv6 but Os does not support it
|
|
|
|
|
|
if (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(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//IPv6
|
|
|
|
|
|
else if (Addfam == ADDRESSFAM.IPv6) |
|
|
|
|
|
{ |
|
|
|
|
|
if (ip.Address.AddressFamily == AddressFamily.InterNetworkV6) |
|
|
|
|
|
{ |
|
|
|
|
|
output = ip.Address.ToString(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return output; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public enum ADDRESSFAM |
|
|
|
|
|
{ |
|
|
|
|
|
IPv4, IPv6 |
|
|
|
|
|
} |