Страница 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 страница на сервере должна содержать только
(Ну и хостер должен поддерживать 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
" писал(а):в результате ищем первую строчку, не являющуюся приватным 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
Ай маладца!!! Огромное СПАСИБО

Реально выручил ))))))))