PDA

Просмотр полной версии : Получаем IP программно.


.:InSiDe:.
20.02.2012, 16:45
Доброе время суток.
Сегодня я расскажу как узнать ваш IP программно на с#
1.Создаём форму.
2.Кидаем на неё кнопку.
3.Кликаем 2 раза на кнопку и в открывшееся поля кидаем этот код.
string myHost = System.Net.Dns.GetHostName();
string myIP = System.Net.Dns.GetHostByName(myHost).AddressList[0].ToString();
MessageBox.Show(myIP,"IP address");
4.Компилируем.
При нажатии на кнопку у вас должно выдавать, что то подобное.
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Спасибо за внимание.
C ув.InSiDe

Sinyss
20.02.2012, 17:05
Зачем постить насколько очевидные гайды? Причем с 2й ссылки в гугле...
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
PS: под словом "очевидные" я подразумеваю решения которые занимают 1-5 строчек и гуглятся за 5 секунд... Пример запроса "Получить IP C#".

Puzer
20.02.2012, 17:23
Но это мы сможем узнать только локальный ip адрес компьютера.
Чтобы узнать адрес компьютера в интернете нужно(лучше всего) парсить его с whois (checkip)


using System.IO;
using System.Net;

public static string GetPublicIP()
{
String direction = "";
WebRequest request = WebRequest.Create("[Ссылки могут видеть только зарегистрированные и активированные пользователи]");
using (WebResponse response = request.GetResponse())
{
using (StreamReader stream = new StreamReader(response.GetResponseStream()))
{
direction = stream.ReadToEnd();
}
}

//ну а теперь просто спарсим
int first = direction.IndexOf("Address: ") + 9;
int last = direction.LastIndexOf("</body>");
direction = direction.Substring(first, last - first);

return direction;
}

Jlo}l{Kaa
20.02.2012, 19:08
Залей исходник)

Nickitee
20.02.2012, 19:57
Не всегда [0] в массиве всех сетевых подключений даст твой айпи.

string ips ="";
foreach (IPAddress ip in Dns.GetHostByName(Dns.GetHostName()).AddressList)
{
ips+="\n"+ip.ToString();
}
MessageBox.Show(ips);

Результат:
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
И так бы [0] возвратил не мой айпи.

•theSaboteur•
20.02.2012, 21:02
Ух, прям гуру!))
Как вспомню, как на лептопе с хоум версией 7мых окон работал dns, "пробивая" машины локальной сети...
Ух! Наверное не меньше, чем полторы секунды размышлял.
Думал промолчать, но не могу:
Просто кушайте информацию о сетевых адаптерах.
System.Net.NetworkInformation.NetworkInterface.Get AllNetworkInterfaces()
Далее проходимся по множеству, вызываем GetIPProperties, ну, дальше в принципе понятно.
Либо WMI/winapi/... .

Puzer
20.02.2012, 21:27
И так бы [0] возвратил не мой айпи.
А чей тогда? :goplol:

Либо WMI/winapi/... .

А можно поподробней ? /horror

•theSaboteur•
20.02.2012, 21:38
WMI:
Класс Win32_NetworkAdapter поле NetworkAddresses,
А вот с апи окон не работаю - ленивый)

Nickitee
22.02.2012, 20:27
А чей тогда? :goplol:
Для меня настройки модема.
Для остальных не знаю /problem