Страница 1 из 2

Как узнать внешний IP адрес?

Добавлено: 18 янв 2009, 16:50
Dr_Grizzly
Всем привет! Есть сайт http://www.ipsee.ru/ где отображается текущий внешний IP адрес. Как этот адрес передать под управление Delphi, ну или по-русски - как средствами дельфи узнать этот адрес? Чтобы потом можно было им оперировать в самой программе.

Re: Как узнать внешний IP адрес?

Добавлено: 18 янв 2009, 21:53
demon416
можно пропарсить страницу
но прийдется переделывать если сайт переделается

Re: Как узнать внешний IP адрес?

Добавлено: 20 янв 2009, 12:47
C_O_D_E
[syntax=Delphi]
uses
WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf: array [0..127] of Char;
begin
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then begin
if GetHostName(@Buf, 128) = 0 then begin
P := GetHostByName(@Buf);
if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
[/syntax]

Re: Как узнать внешний IP адрес?

Добавлено: 20 янв 2009, 17:13
Dr_Grizzly
Функция классная, спасибо, только она выдает локальный IP )))))
А по поводу переделать сайт - это навряд ли )))

Есть еще предложения???

Re: Как узнать внешний IP адрес?

Добавлено: 21 янв 2009, 00:26
Naeel Maqsudov
Узнать внешний IP можно только снаружи.
Т.е. если я сижу в квартире, и хочу узнать как выглядит дом снаружи мне надо либо самому выйти и посмотреть, либо кому-нибудь позвонить, кто мог бы мне рассказать.
Как ни крути, придется обратиться к какому-нибудь внешнему сервису.
Как было справедливо замечено ipsee использовать не очень хочется, так как они в олюбой момент могут изменить дизайн своей страницы (например, добавить туда больше рекламы), и тогда "выкусить" оттуда свой IP-щник будет не просто.
Можно для этой цели создать свой собственный сервис, наприер, Dr_Grizzly@narod.ru/ipview. HTML страница на сервере должна содержать только

Код: Выделить всё

<!--#echo var="REMOTE_ADDR"--> 
(Ну и хостер должен поддерживать SSI.)

Re: Как узнать внешний IP адрес?

Добавлено: 25 мар 2009, 12:01
alexander.spb
свой внешний можно следующим способом:

>traceroute http://www.google.ru - для *nix
>tracert http://www.google.ru -- для windows

в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.

Re: Как узнать внешний IP адрес?

Добавлено: 25 мар 2009, 12:26
AiK
&quot писал(а):в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.
Это не правда.
Во-первых, Your IP Address Is 89.113.78.239, а трэйс такой:

Код: Выделить всё


  1    <1 мс    <1 мс    <1 мс  192.168.10.1
  2     6 ms     1 ms     1 ms  10.180.68.1
  3     2 ms     2 ms     2 ms  192.168.249.13
  4     1 ms    <1 мс    <1 мс  192.168.248.237
  5     1 ms     1 ms     1 ms  gw34.zet [192.168.254.225]
  6     1 ms     1 ms     1 ms  89.113.[B]209.33[/B]
Во-вторых, в следующий момент трейс может быть таким:

Код: Выделить всё

 1    <1 мс    <1 мс    <1 мс  192.168.10.1
 2     2 ms     2 ms     2 ms  10.28.196.1
 3     2 ms     2 ms     2 ms  10.255.255.57
 4     1 ms    <1 мс     1 ms  10.255.255.21
 5     1 ms     1 ms     1 ms  10.255.255.105
 6     1 ms     1 ms     1 ms  10.255.255.89
 7   192 ms   203 ms     1 ms  10.255.255.97
 8     1 ms     1 ms     1 ms  10.255.255.4
 9   108 ms     1 ms   205 ms  border.cifracom.ru [195.189.80.33]
Т.е. у одной коннекции может быть один IP, а у другой - свой. Причём опять же не 195.189.80.33.

Re: Как узнать внешний IP адрес?

Добавлено: 26 мар 2009, 10:40
alexander.spb
согласен ))
только мне не понятно, почему я не прав.
Может потому, что для того комп-ра, который Gateway, печатается только внутренний IP ?

Re: Как узнать внешний IP адрес?

Добавлено: 29 мар 2009, 20:26
oStWay
Naeel Maqsudov писал(а): Можно для этой цели создать свой собственный сервис
Зачем же, всё уже давно создано ;

http://www.whatismyip.com/automation/n09230945.asp

Код: Выделить всё

var 
    ip : string;
begin
    ip := idHTTP.Get('http://www.whatismyip.com/automation/n09230945.asp');
    ...
end;
...например.

Re: Как узнать внешний IP адрес?

Добавлено: 30 мар 2009, 18:16
Dr_Grizzly
Ай маладца!!! Огромное СПАСИБО ;) Реально выручил ))))))))