Lazarus. Программа для определения своего IP адреса

Задача - узнать свой IP. Причем IP не внутренний -в локльной сети , а внешний-в глобальной сети Интернет.

Самый простой способ для этого - обратится из программы к какому-нибудь сайту - онлайн сервису соответсвующего профиля. Например, 2ip.ru .

Я в своей программе решил брать IP с http://rl.ammyy.com - там меньше дополнительной информации , а значит проще выбрать нужный кусок текста.

Для запроса текста с сайта используем модуль HTTPSEND.pas из популярной бесплатной библиотеки подпрограмм для работы с сетью - SYNAPCE.

На форму добавляем компонент Edit1.

В раздел Uses дописываем модуль HTTPSEND.

(При этом в папке проекта должны быть как минимум следующие файлы : httpsend.pas, sswin32.inc, synacode.pas, synafpc.pas, synaip.pas, synautil.pas, synsock.pas, blcksock.pas . Ну или если не хотите заморачиваться - распакуйте туда всю библиотеку Synapce )

На событие FormCreate пишем

procedure TForm1.FormCreate(Sender: TObject);
 var
   HTTP: THTTPSend;
   Result : boolean;
   s,c:string; i,n:integer;
   ss:TStringList;
 begin
   HTTP := THTTPSend.Create;
   ss:=TStringList.Create;
  { Http.ProxyHost:='192.168.0.1';   если соединение не прямое, а через проксю типа UserGate
   http.ProxyPort:='8080';   }
   try
     Result := HTTP.HTTPMethod('GET', 'http://rl.ammyy.com'); Запрос к сайту
     if Result then begin                    Если ответ есть
       ss.LoadFromStream(HTTP.Document);    в переменную ss - все строки со страницы
       if ss.Count>=1 then begin
       s:=ss[0]; c:='';n:=0;         первую строку разбираем, она типа Your IP=83.174.217.211, country = RU
       for i:=1 to Length(s) do
       begin
         if s[i]=',' then break;  если дошли до запятой - стоп
         if n=1 then c:=c+s[i];
         if s[i]='=' then n:=n+1;   после первого равно начинаем брать
       end; end;
     end;
   finally
     HTTP.Free;
     Edit1.Text:=c;
     ss.Free;
   end;
 end;           

Исходники ниже.  Exe-шник вот - http://yadi.sk/d/3ruKD-SK00fE8

Теги: 
ВложениеРазмер
Исходники641.5 КБ
Консольный вариант программы838.61 КБ

!

Область интересов: