Ip-адреса

  • Автор темы lazynov
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

lazynov

Гость
#1
Вот в чем суть:
Допустим, я имею подключение по локалке и в это же время сижу в нете. Я конечно же имею в этом случае два IP-адреса. Как их получить по раздельности?
 
F

Fossil Code

Гость
#3
Либо этот адрес public, т.е. одинаковый для локалки и Инета, либо локальный превращается в инетовский где-то на сетевом оборудовании (прокси, нат...) В последнем случае он программно недоступен.
 
L

lazynov

Гость
#4
а Вы их получили вместе?
и по какому же критерию они разные?
Что значит по какому критерию?
Для локалки - один, для нета через модем -другой.
Ip адрес получаю так:
Код:
 WSAStartUp($0101, WSAData);
GetHostName(Name, $FF);
p := GetHostByName(Name);
ip_addr := inet_ntoa(PInAddr(p.h_addr_list^)^);
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#5
<!--QuoteBegin-lazynov+23:11:2006, 13:05 -->
<span class="vbquote">(lazynov @ 23:11:2006, 13:05 )</span><!--QuoteEBegin-->Что значит по какому критерию?
Для локалки - один, для нета через модем -другой.
[snapback]48697" rel="nofollow" target="_blank[/snapback]​
[/quote] :D :) :) :(

ну и как определить что 110,000,025,110 - это для инет,
а 123,123,103,2 -это для сети?
копать в сторону "сетевые подключения", так как адаптер имеет IP адрес , а вот в какую сторону этоот адаптер работает...
 
G

garrymax

Гость
#6
Описания цивилизованного способа я что-то припомню, кроме открытия сокета на каждый адрес для соединения с внешим адресом и смотреть, какой из них дал добро, но с локалкой будет проще несколько вариантов:

Есть резервированный диапозон для локалки - просто выявить принадлежность;

Если сеть сконфигурированна правильно, то маршрут по умолчанию будет смотреть в инет, а не в другую локалку - по маске можно определить принадлежность к нему внешнего IP;

Есть ище куча немереных способов (если подумать), вполть до тупого сравнения IP с вариантами в arp таблице - там будут соседи с локальными адресами. Например есть вариант, но у него есть и большое НО: В доке сказано, что внешний IP при правильной конфигурации хоста должен быть первичным, а локальный адрес в таком проядке считается альясом (мол, DNS так выдает записи типа А). Как бы можно и это использовать (первый адрес в структуре hostent списка h_addr_list - то что возвращает gethostbyname), НО это правильно работает только в UNIX, а форточках даже ping 255.255.255.255 не пашет. Если прибавить сюда горе-админов, котрые нормально сеть конфигурить не могут, то и остальные варианты проверки не помогут, если только не пускать все их сразу.
 
Статус
Закрыто для дальнейших ответов.