private IPAddress GuessLocalIp()
{
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface nic in adapters)
{
if (nic.OperationalStatus == OperationalStatus.Up &&
(nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet3Megabit ||
nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet ||
nic.NetworkInterfaceType == NetworkInterfaceType.FastEthernetT ||
nic.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
nic.NetworkInterfaceType == NetworkInterfaceType.GigabitEthernet ||
nic.NetworkInterfaceType == NetworkInterfaceType.FastEthernetFx))
{
foreach (UnicastIPAddressInformation ipInfo in nic.GetIPProperties().UnicastAddresses)
{
byte[] address = ipInfo.Address.GetAddressBytes();
if (address.Length == 4)
{
if ((address[0] == 172 && address[1] >= 16 && address[1] <= 31)
|| (address[0] == 10)
|| (address[0] == 192 && address[1] == 168))
return ipInfo.Address;
}
}
}
}
return IPAddress.Any;
}