Ip-адреса

Тема в разделе "Delphi - Сети", создана пользователем lazynov, 22 ноя 2006.

Статус темы:
Закрыта.
  1. lazynov

    lazynov Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    а Вы их получили вместе?
    и по какому же критерию они разные?
     
  3. Fossil Code

    Fossil Code Гость

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

    lazynov Гость

    Что значит по какому критерию?
    Для локалки - один, для нета через модем -другой.
    Ip адрес получаю так:
    Код (Text):
     WSAStartUp($0101, WSAData);
    GetHostName(Name, $FF);
    p := GetHostByName(Name);
    ip_addr := inet_ntoa(PInAddr(p.h_addr_list^)^);
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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 адрес , а вот в какую сторону этоот адаптер работает...
     
  6. garrymax

    garrymax Гость

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

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

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

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

Поделиться этой страницей