Уже раз 5 на моей памяти в форумах поднимался вопрос по определению IP адресов локальной машины, решил выложить несколько реализаций. Способ №1: Используя вызов WSAIoctl Winsock2 c кодом SIO_ADDRESS_LIST_QUERY
Здравствуйте, GrayWizard, Вы писали:
GW>А без B>>#include <iostream>
GW>реально? У меня что-то не получается...
Убираешь все строчик, в которых встречается слова cout, cerr, endl;
Должно зароботать..
Нет ничего невозможного..
Re: [network] Определение своего IP адреса
От:
Аноним
Дата:
07.09.04 14:28
Оценка:
Здравствуйте, butcher, Вы писали:
B>Здравствуйте,
B> Уже раз 5 на моей памяти в форумах поднимался вопрос по определению IP адресов локальной машины, решил выложить несколько реализаций.
...
Можно и так:
'Returns the IP address for each IP-enabled network adapter installed in a computer.
strComputer = "."
'strComputer = "сетевое имя удаленного компа"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i), IPConfig.Description(i)
Next
End If
Next
А вот у меня есть вопросец. У компа может быть > 1 адреса, например, один — выход в инет, т.е. публичный IP address, второй — адрес в локальной сети. Вроде как я где-то слышал, что есть определенное соглашение, что для локалок выбираются адреса из 192.168.x.x, 10.0.x.x и что-то еще. Но не все этого знают, не все так делают Собственно, если ли какой-нить надежный способ определения реального интернетного IP адреса? Например, у моего провайдера (Точка.ру) я получаю динамически 2 адреса — один нормальный, а второй вида 3.4.5.6 — вроде тоже нормальный, но он же не "настоящий"
Здравствуйте, CyberDemon, Вы писали:
CD>А вот у меня есть вопросец. У компа может быть > 1 адреса, например, один — выход в инет, т.е. публичный IP address, второй — адрес в локальной сети. Вроде как я где-то слышал, что есть определенное соглашение, что для локалок выбираются адреса из 192.168.x.x, 10.0.x.x и что-то еще. Но не все этого знают, не все так делают Собственно, если ли какой-нить надежный способ определения реального интернетного IP адреса? Например, у моего провайдера (Точка.ру) я получаю динамически 2 адреса — один нормальный, а второй вида 3.4.5.6 — вроде тоже нормальный, но он же не "настоящий"
Помоему, единственный верный способ, это поставить на машине с заведомо реальным IP адресом сервис, который будет делать вот что:
вы запускаете специальный клиент этого сервиса, который соединяется с сервером и пересылает список IP адресов вашей машины;
сервис пытается соединится с вами по этим адресам (естественно, локалхосты всякие отпадают);
если среди списка IP адресов нету адреса по которому с вами можно соединится, значит у вас нет реального адреса;
если соединится удаётся, но в списке такого адреса нет, значит соединение происходит через NAT;
и, наконец, тот адрес по которому удаётся соединится — будет реальным.
ИМХО.
Нда...
То есть, получается, нет надежного способа определить реальный интернет IP именно на клиенте? Блин, придется напрягать клиента выбором адреса (дело в том, что надо знать IP, по которому к клиенту может прицепиться интернет-юзер).
Здравствуйте, CyberDemon, Вы писали:
CD>[skipped]
CD>Нда... CD>То есть, получается, нет надежного способа определить реальный интернет IP именно на клиенте? Блин, придется напрягать клиента выбором адреса (дело в том, что надо знать IP, по которому к клиенту может прицепиться интернет-юзер).
Почему же? Собираешь список всех IP-адресов и выкидываешь из него виртуальные: с 10.0.0.0 по 10.255.255.255, с 172.16.0.0 по 172.31.255.255 и c 192.168.0.0 по 192.168.255.255 (RFC 1597).
Здравствуйте, AvaLANche, Вы писали:
ALA>Здравствуйте, CyberDemon, Вы писали:
CD>>Нда... CD>>То есть, получается, нет надежного способа определить реальный интернет IP именно на клиенте? Блин, придется напрягать клиента выбором адреса (дело в том, что надо знать IP, по которому к клиенту может прицепиться интернет-юзер).
ALA>Почему же? Собираешь список всех IP-адресов и выкидываешь из него виртуальные: с 10.0.0.0 по 10.255.255.255, с 172.16.0.0 по 172.31.255.255 и c 192.168.0.0 по 192.168.255.255 (RFC 1597).
Ну я же написал уже про умников-провайдеров. Вот, свежачок — в данный момент у меня (провайдер точка.ру) 2 ip адреса:
12.13.14.15
83.237.3.46
CD>Ну я же написал уже про умников-провайдеров. Вот, свежачок — в данный момент у меня (провайдер точка.ру) 2 ip адреса: CD>12.13.14.15 CD>83.237.3.46
CD>Какой выкинуть?
Первый.
Re[4]: [network] Определение своего IP адреса
От:
Аноним
Дата:
17.05.05 07:55
Оценка:
Здравствуйте, butcher,
а как используя SNMP Extension Agent API можно изменить IP адрес?
Re: [network] Определение своего IP адреса
От:
Аноним
Дата:
26.10.05 17:09
Оценка:
Здравствуйте, butcher, Вы писали:
B>Здравствуйте,
B> Уже раз 5 на моей памяти в форумах поднимался вопрос по определению IP адресов локальной машины, решил выложить несколько реализаций. B>Способ №1: Используя вызов WSAIoctl Winsock2 c кодом SIO_ADDRESS_LIST_QUERY B>
Дайте пример на установку IP адресса используя IP Helper API.
Re[11]: [network] Определение своего IP адреса
От:
Аноним
Дата:
13.11.07 14:23
Оценка:
А я что-то слышал про то что есть сайты, которым шлешь запрос,а они возвращают тебе твой ip. помоему реальнее такого айпишника трудно придумать). Только вот к сожалению конкретно сайты и то как делать этот запрос я не знаю... Не подскажете?
Здравствуйте, Аноним, Вы писали:
А>А я что-то слышал про то что есть сайты, которым шлешь запрос,а они возвращают тебе твой ip. помоему реальнее такого айпишника трудно придумать). Только вот к сожалению конкретно сайты и то как делать этот запрос я не знаю... Не подскажете?
Здравствуйте, CyberDemon, Вы писали:
CD>Нда... CD>То есть, получается, нет надежного способа определить реальный интернет IP именно на клиенте? Блин, придется напрягать клиента выбором адреса (дело в том, что надо знать IP, по которому к клиенту может прицепиться интернет-юзер).
Ясен пень нет. Я больше скажу — в какой нибудь локалке или офисе на клиенте вообще может не быть "реального интернет IP" (NAT/PAT)...
С другой стороны имея IP 10.*.*.* (не выходя в инет) я имею возможноть доступаться к некоторым инет ресурсам (torrents.ru например) — такая вот конфигурация сети...
Вобщем гадание по IP насколько увлекательно настолько и неточно
PS: Смотри как это сделано в emule, торрент клиентах и прочих...