Как получить IP-адрес компьютера в локальной сети, если у вас есть имя компьютера, используя С#

В настоящее время я пишу программу на С# для подключения одного компьютера к другому по локальной сети. У меня есть имя компьютера-получателя, но IP-адрес динамический, поэтому время от времени он будет меняться.

Как я могу получить IP-адрес локальной сети принимающего компьютера? (тот, который выглядит как 192.168.1.# )


person Logan    schedule 05.07.2013    source источник
comment
дубликат.stackoverflow.com/questions /11931582/   -  person Bojan Komazec    schedule 05.07.2013
comment
Прошу прощения, я пытался искать, но не знал, что это называется имя хоста   -  person Logan    schedule 05.07.2013


Ответы (2)


Предполагая, что вы ищете первый IP-адрес IPv4, вы можете использовать следующее:

String name = "Name";
IPHostEntry ipHostInfo = Dns.GetHostEntry(name);            
// OR you can get the name of the current computer using 
// IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());                

// Get the first IPv4 address
IPAddress ip = ipHostInfo.AddressList.Where(n => n.AddressFamily == AddressFamily.InterNetwork).First();
person Jake1164    schedule 05.07.2013
comment
Кажется, я не могу понять, где работает часть .Where, она не распознается. - person Logan; 05.07.2013
comment
4.5 является частью определенного пространства имен? - person Logan; 05.07.2013
comment
Это было 4.0, но должно работать и в 3.5. Где находится linq, поэтому вам нужна ссылка на использование System.Linq; - person Jake1164; 05.07.2013
comment
Отлично, получилось. Спасибо =) - person Logan; 05.07.2013

Метод Dns.GetHostAddresses

вы можете разрешить имя хоста в IP следующим образом

string hostName = "www.Google.com";
IPAddress[] addresslist = Dns.GetHostAddresses(hostName);

foreach (IPAddress address in addresslist)
{
   string ip = address.ToString();
}
person Kurubaran    schedule 05.07.2013