GetExternalIP — программа для получения внешнего IP адреса

Доброго времени суток, уважаемые читатели блога SoftMaker.kz. Сегодня я хочу выложить программку, которая помогает мне получать IP адрес своего роутера KEENETIC без использования платных или каких-то других сервисов. Код программы основан на том, что было описано в статье как получить внешний IP адрес средствами Delphi. Другая статья из этой серии описывает, как получить IP адрес компьютера в локальной сети с помощью Delphi.

Первый запуск программы GetExternalIP

Программа GetExternalIP это всего один исполняемый файл GetExternalIP.exe. Для того чтобы получить ваш внешний IP адрес необходимо иметь подключение к сети интернет и просто запустить файл GetExternalIP.exe. Ваш IP адрес отобразится на экране в форме диалога.

GetExternalIP - диалог получения внешнего IP адреса

Если посмотреть на схему, то видно, что мы выполняем только первый и второй пункты. Второй пункт выполнен наполовину, поскольку записи в файл ip.txt не происходит, а выводится форма диалога с IP адресом.

При первом запуске программа GetExternalIP работает с настройками, которые установлены по умолчанию. Если вы хотите установить свои настройки и расширить возможности программы необходимо прочитать следующий подзаголовок.

Описание файла настройки программы GetExternalIP

Настройки программы GetExternalIP хранятся в файле settings.ini. По умолчанию в него записываются следующие секции с параметрами:

[Main]
SleepTime=0
DisplayIPInDialog=yes
DoNotUseFTP=yes
GetAnExternalIPAddressPhp=https://site.softmaker.kz/get_an_external_ip_address.php
[FTP]
Host=your-ftp-host
Port=21
Username=your-ftp-username
Password=your-ftp-password
FTPDir=your-ftp-dir

Параметры секции [Main]:

  • SleepTime — указывает на задержку выполнения программы в миллисекундах.
    Этот параметр стоит использовать, когда вы запускаете программу GetExternalIP при старте Windows и
    не уверены, что ваше соединение с Интернет установится сразу.
  • DisplayIPInDialog — если установлен в значение yes, тогда будет выведен диалог.
  • DoNotUseFTP — если установлен в значение no, тогда будет установлено подключении в согласии с учётными
    данными, которые указаны в секции [FTP].Также произойдет запись файла ip.txt в каталог,
    указанный в параметре FTPDir.
  • GetAnExternalIPAddressPhp — это путь к скрипту

    get_an_external_ip_address.php
    , который выдаёт ваш внешний IP адрес.
    Такой же скрипт вы можете поместить на свой вебсайт и прописать путь в этом параметре.

Параметры секции [FTP] содержат учётные данные доступа к вашему FTP серверу.
Если вы купили хостинг, то попросите хостера дать вам эти данные, затем пропишите их в файле settings.ini в секции [FTP]:

  • Host — адрес вашего FTP сервера.
  • Port — порт FTP сервера. По умолчанию 21 у вас может быть другой.
  • Username — имя пользователя для доступа к FTP серверу.
  • Password — пароль для доступа к FTP серверу.
  • FTPDir — путь на FTP сервере, куда будет записан файл ip.txt с вашим IP адресом.

Описание схемы работы программы GetExternalIP

Если вы заполнили все параметры секции [FTP]. И поставили параметр DoNotUseFTP секции [Main] в значение no, тогда программа GetExternalIP будет работать в полном объёме.

Согласно схеме:

  1. Мы получаем IP адрес, обратившись к скрипту get_an_external_ip_address.php.
  2. Затем в диалоге формы получаем наш IP адрес,
    если праметр DisplayIPInDialog установлен в значение yes.
    Так же происходит запись файла ip.txt, который содержит ваш внешний IP адрес, на диск вашего компьютера.
  3. Файла ip.txt, содержащий ваш внешний IP адрес, записывается через FTP по адресу,
    который вы указали в параметре FTPDir.

Как использовать внешний IP адрес, который получен в результате работы программы GetExternalIP?

Конечно, возникает вопрос, зачем записывать файл ip.txt на FTP ресурс? Это нужно, если вы хотите знать ваш внешний IP адрес, даже если вы находитесь в другом месте, например, чтобы получить доступ к вашему компьютеру или внешнему диску (который подключён к роутеру через USB-порт). Если ваш модем или роутер предоставляют доступ к USB-накопителю по протоколу FTP, то вы можете организовать к ним FTP-доступ, указав пользователя и пароль.

Теперь, когда вы имеете ваш внешний IP адрес, подключённый USB-накопитель, пользователя и пароль для FTP-доступа, то можно обращаться к нему из сети интернет по следующему шаблону: ftp://your-username:your password@your-external-ip-address. Например: ftp://administrator:12345 @ 222.132.29.57 (пробелы до и после знака «@» убрать). Можно организовать получение такого адреса автоматически, написав небольшой скрипт на PHP:

<?php

$fp = fopen("ip.txt", "r"); // Открываем файл в режиме чтения
if ($fp)
{
    while (!feof($fp))
    {
        $mytext = trim(fgets($fp, 999));
        $ftp = "ftp://administrator:12345@".$mytext;
        break;
    }
    echo $ftp;
}
else echo "Ошибка при открытии файла";
fclose($fp);

?>

Надеюсь, эта небольшая программка будет вам полезна.


7 ответы
  1. Борис говорит:

    Добрый день!
    Вопрос: а полученный IP — динамический адрес, полученный от провайдера?!

  2. Softmaker говорит:

    Здравствуйте, Борис! Какой назначен вам тот и и будет! Назначен статический получите статический и т.д.

  3. Morgan-KZ говорит:

    на Delphi 7 ругается на GetHTML, Я так понимаю у вас посвежее Delphi?
    Есть ли у вас icq или агент? есть вопросы, поможете?

  4. Softmaker говорит:

    Здравствуйте! У меня Delphi 7. Какие вопросы? Пишите здесь. На форму нужно бросить компонент IdFTP из набора компонент Indy Clients.

  5. Softmaker говорит:

    Спасибо, Олег! Я сам изучал Delphi по разным книгам начиная с версии 2.0. Тогда трудно было найти, а сейчас и в магазинах всякой литературы много и в интернете примеры. Одна книга мне помогла в своё время это Программирование в среде Delphi 2.0 Суркова Д.

  6. Олег говорит:

    Просто невообразимо-огромное спасибо! Перерыл весь инет, но, толи из-за недостаточного знания, толи от нехватки усердия, конкретно-работающий пример, нашел только у Вас! Если честно — ничего не понял, но алгоритм — работает, так что дело за малым — понять как! И ещё, если Вам не сложно , подскажите литературу, по которой можно ДЕЙСТВИТЕЛЬНО изучить делфи.
    Верх моих мечтаний — создать чат, работающий со внешними адресами интернета. Т.е. допустим я в локальной сетке, другой чел дома, с DSL модемом, третий ещё нибудь где, и все мы — как счастливая семья общаемся без всяких внешних серверов, друг с другом.

Комментарии закрыты.