У Інтэрнэце ёсць некалькі месцаў, якія паказваюць, як атрымаць IP-адрас. І многія з іх выглядаюць так:
String strHostName = string.Empty;
// Getting Ip address of local machine...
// First get the host name of local machine.
strHostName = Dns.GetHostName();
Console.WriteLine("Local Machine's Host Name: " + strHostName);
// Then using host name, get the IP address list..
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);
IPAddress[] addr = ipEntry.AddressList;
for (int i = 0; i < addr.Length; i++)
{
Console.WriteLine("IP Address {0}: {1} ", i, addr[i].ToString());
}
Console.ReadLine();
У гэтым прыкладзе я атрымліваю некалькі IP-адрасоў, але мяне цікавіць толькі той, які маршрутызатар прызначае кампутару, на якім працуе праграма: IP-адрас, які я б даў напрыклад, хтосьці хоча атрымаць доступ да агульнай тэчкі на маім кампутары.
Калі я не падлучаны да сеткі, і я падключаны да Інтэрнэту непасрэдна праз мадэм без маршрутызатара, я хацеў бы атрымаць памылку. Як я магу зразумець, ці падключаны мой кампутар да сеткі з дапамогай C #, і калі ён атрымае IP-адрас LAN.
Кроме того, просто простой код для получения IP-адреса клиента:
public static string getclientIP()
{
var HostIP = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "";
return HostIP;
}
Надеюсь, это поможет вам.
Уже существуют многие из ответа, но я все еще вношу мой:
public static IPAddress LocalIpAddress() {
Func<IPAddress, bool> localIpPredicate = ip =>
ip.AddressFamily == AddressFamily.InterNetwork &&
ip.ToString().StartsWith("192.168"); //check only for 16-bit block
return Dns.GetHostEntry(Dns.GetHostName()).AddressList.LastOrDefault(localIpPredicate);
}
Один лайнер:
public static IPAddress LocalIpAddress() => Dns.GetHostEntry(Dns.GetHostName()).AddressList.LastOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork && ip.ToString().StartsWith("192.168"));
примечание: Поиск от последнего, потому что это все еще работало после некоторых интерфейсов, добавленных в устройство, таких как MobileHotspot, VPN или другие необычные виртуальные адаптеры.