GetExternalIP — программа для получения внешнего IP адреса
Доброго времени суток, уважаемые читатели блога SoftMaker.kz. Сегодня я хочу выложить программку, которая помогает мне получать IP адрес своего роутера KEENETIC без использования платных или каких-то других сервисов. Код программы основан на том, что было описано в статье как получить внешний IP адрес средствами Delphi. Другая статья из этой серии описывает, как получить IP адрес компьютера в локальной сети с помощью Delphi.
- Первый запуск программы GetExternalIP
- Описание файла настройки программы GetExternalIP
- Описание схемы работы программы GetExternalIP
- Как использовать внешний IP адрес, который получен в результате работы программы GetExternalIP?
Первый запуск программы GetExternalIP
Программа GetExternalIP это всего один исполняемый файл GetExternalIP.exe. Для того чтобы получить ваш внешний IP адрес необходимо иметь подключение к сети интернет и просто запустить файл GetExternalIP.exe. Ваш 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 будет работать в полном объёме.
Согласно схеме:
- Мы получаем IP адрес, обратившись к скрипту get_an_external_ip_address.php.
- Затем в диалоге формы получаем наш IP адрес,
если праметр DisplayIPInDialog установлен в значение yes.
Так же происходит запись файла ip.txt, который содержит ваш внешний IP адрес, на диск вашего компьютера. - Файла 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); ?>
Надеюсь, эта небольшая программка будет вам полезна.
Добрый день!
Вопрос: а полученный IP — динамический адрес, полученный от провайдера?!
Здравствуйте, Борис! Какой назначен вам тот и и будет! Назначен статический получите статический и т.д.
на Delphi 7 ругается на GetHTML, Я так понимаю у вас посвежее Delphi?
Есть ли у вас icq или агент? есть вопросы, поможете?
Здравствуйте! У меня Delphi 7. Какие вопросы? Пишите здесь. На форму нужно бросить компонент IdFTP из набора компонент Indy Clients.
Спасибо, Олег! Я сам изучал Delphi по разным книгам начиная с версии 2.0. Тогда трудно было найти, а сейчас и в магазинах всякой литературы много и в интернете примеры. Одна книга мне помогла в своё время это Программирование в среде Delphi 2.0 Суркова Д.
Просто невообразимо-огромное спасибо! Перерыл весь инет, но, толи из-за недостаточного знания, толи от нехватки усердия, конкретно-работающий пример, нашел только у Вас! Если честно — ничего не понял, но алгоритм — работает, так что дело за малым — понять как! И ещё, если Вам не сложно , подскажите литературу, по которой можно ДЕЙСТВИТЕЛЬНО изучить делфи.
Верх моих мечтаний — создать чат, работающий со внешними адресами интернета. Т.е. допустим я в локальной сетке, другой чел дома, с DSL модемом, третий ещё нибудь где, и все мы — как счастливая семья общаемся без всяких внешних серверов, друг с другом.
возможно ли получить исходник ?