Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
28th
Ноя
Как узнать внешний IP-адрес?
Posted by obzor under Delphi, Архив, Топик-обзор
Как узнать свой внешний айпи? Может компонент какой есть?
P.S. юзал idipwatch, показует только локалку…
var
http: TIdHTTP;
strIP: String;
begin
http := TIdHTTP.Create(Owner);
strIP := http.Get('http://cmyip.com/');
strIP := copy(strIP, pos('My IP Address Is ', strIP) + 18, 15);
strIP := Trim(strIP);
ShowMessage(strIP);
end;
Из своего архива скину:
сайт: http://2ip.ru/
Код:
{-------------------------------------------------------------------------------
Функция: ParseStr
Автор: ArhangeL
Дата: 2011.01.11
Входные параметры: str, sub1, sub2: string
Результат: string
Описание: Парсер строки, вытаскивает текст из строки str между тегами sub1, sub2
Stt входная строка.
sub1 - открывающий тег.
Sub2 - закрывающий тег.
-------------------------------------------------------------------------------}
function ParseStr(str, sub1, sub2: string): string;
var
st, fin: Integer;
begin
st := Pos(sub1, str);
if st > 0 then
begin
str := Copy(str, st + length(sub1), length(str) - 1);
st := 1;
fin := Pos(sub2, str);
Result := Copy(str, st, fin - st);
str := Copy(str, fin + length(sub2), length(str) - 1);
end;
end;
procedure RuWriteln(const S: string); //Перекодируем стандартный writeln
var
NewStr: string;
begin
SetLength(NewStr, Length(S));
CharToOem(PChar(S), PChar(NewStr));
Writeln(NewStr);
end;
procedure GetMyInetIP; //Маин процедуре
var
http: TIdHTTP;
s: string;
TruPos: Integer;
begin
Http := TIdHTTP.Create(nil);
try
s := Utf8ToAnsi(http.Get(WHOIS_IP));
TruPos := AnsiPos('Ваш IP адрес:', s);
if not (TruPos = 0) then
begin
RuWriteln('Ваш внешний интернет IP: ' + ParseStr(s, '<big>', '</big>')); //выводим IP
end;
finally
FreeAndNil(http);
end;
end;
А вопрос так и остался без вразумительного ответа.
Причем, винда без особых усилий и не обращаясь ни к каким сомнительным сайтам, показывает IP адреса (папка «Сетевые подключения»).
Ищем способ. Автор некий Чарик (не статья автора — в ней он не совсем прав, а в одном из постов).
Проверяем (Д2010).
uses WinSock;
...
procedure GetIPs;
type
InAddr = Array[0..10] of PInAddr;
TInAddr = ^InAddr;
var
Host: PHostEnt;
pPtr: TInAddr;
Buffer: Array[0..63] of Ansichar;
i: Integer;
Socket: TWSAData;
begin
//компонент для отображения выбираем по вкусу; в реальной жизни
//можно заменить на TStrings (TStringList) в параметре или результате.
Form1.ListBox1.Clear;
WSAStartup($101, Socket);
GetHostName(Buffer, SizeOf(Buffer));
Host := GetHostByName(buffer);
if Host = nil then Exit;
pPtr := TInAddr(Host^.h_addr_list);
i := 0;
while pPtr^[ i] <> nil do begin
Form1.ListBox1.Items.Add(inet_ntoa(pPtr^[ i]^));
Inc(i);
end;
WSACleanup;
end;
Работает. Показывает и сетевой IP и инетовский.
Как выбрать нужный — вопрос, но если это необходимо.
Впрочем, сетевые адреса известны и их легко можно идентифицировать.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)