Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2011, 18:03   #1
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию как узнать внешний айпи

как узнать свой внешний айпи? мож компонент какой есть?
З.Ы. юзал idipwatch показует ток локалку(
megostudent вне форума Ответить с цитированием
Старый 03.09.2011, 18:17   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

можно пропарсить ответ от http://cmyip.com/ или подобных сайтов
а можно просто спросить у провайдера )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.09.2011, 18:33   #3
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

покажи как парсить)
megostudent вне форума Ответить с цитированием
Старый 03.09.2011, 18:34   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
просто спросить у провайдера
звонок провайдеру с этим вопросом +распознавание речи?оО по-моему это совсем не "просто" )

Цитата:
покажи как парсить)
Например, с помощью компонента idHTTP вытянуть куда-нибудь (в memo, например) код сайта и найти там айпи.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 03.09.2011 в 18:47.
Alex11223 вне форума Ответить с цитированием
Старый 03.09.2011, 19:06   #5
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Код:
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;
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 04.09.2011, 09:40   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну и ещё
тырц
и
Ваш IP адрес
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.09.2011, 20:37   #7
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Установить у себя на компе клиентскую программу DynDNS Updater свой IP и будете знать свой Ай-пишник всегда, даже если он меняется динамически.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 04.09.2011, 20:49   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

О господи, опять навыдумывали граблей....
Из своего архива скину:
сайт: 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;
Человек_Борща вне форума Ответить с цитированием
Старый 05.09.2011, 00:54   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
TruPos := AnsiPos('Ваш IP адрес:', s);
прежде чем кричать про грабли, подумайте, куда можно будет засунуть этот код, если у админа 2ip.ru зачешется левая пятка, и он поменяет эту строку на другую.

Неплох вариант с DynDNS, но, если вам программно понадобилось определить свой внешний IP, на 98% можно утверждать, что вы решаете не ту задачу, или зашли не с того конца.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.09.2011, 03:52   #10
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

А вопрос так и остался без вразумительного ответа.
Причем, винда без особых усилий и не обращаясь ни к каким сомнительным сайтам, показывает 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 и инетовский.
Как выбрать нужный - вопрос, но если это необходимо.
Впрочем, сетевые адреса известны и их легко можно идентифицировать.
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как защитить внешний жесткий диск? Evgenii(Евгений) Компьютерное железо 4 01.12.2010 16:26
Как определить внешний IP адрес Temafeyo Свободное общение 5 23.10.2010 18:44
Как изменить внешний вид формы? quarty Общие вопросы Delphi 7 10.10.2010 16:18
Как создать внешний файл kostello Общие вопросы C/C++ 2 29.08.2009 23:26
Как прервать внешний цикл? AndreyF Общие вопросы Delphi 15 15.06.2009 17:46