Как узнать внешний IP адрес?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Всем привет! Есть сайт http://www.ipsee.ru/ где отображается текущий внешний IP адрес. Как этот адрес передать под управление Delphi, ну или по-русски - как средствами дельфи узнать этот адрес? Чтобы потом можно было им оперировать в самой программе.
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

можно пропарсить страницу
но прийдется переделывать если сайт переделается
но прийдется переделывать если сайт переделается
ака хинт: коментируйте код, самим же легче будет разобраться 

-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
[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]
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]
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Функция классная, спасибо, только она выдает локальный IP )))))
А по поводу переделать сайт - это навряд ли )))
Есть еще предложения???
А по поводу переделать сайт - это навряд ли )))
Есть еще предложения???
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Узнать внешний IP можно только снаружи.
Т.е. если я сижу в квартире, и хочу узнать как выглядит дом снаружи мне надо либо самому выйти и посмотреть, либо кому-нибудь позвонить, кто мог бы мне рассказать.
Как ни крути, придется обратиться к какому-нибудь внешнему сервису.
Как было справедливо замечено ipsee использовать не очень хочется, так как они в олюбой момент могут изменить дизайн своей страницы (например, добавить туда больше рекламы), и тогда "выкусить" оттуда свой IP-щник будет не просто.
Можно для этой цели создать свой собственный сервис, наприер, Dr_Grizzly@narod.ru/ipview. HTML страница на сервере должна содержать только
(Ну и хостер должен поддерживать SSI.)
Т.е. если я сижу в квартире, и хочу узнать как выглядит дом снаружи мне надо либо самому выйти и посмотреть, либо кому-нибудь позвонить, кто мог бы мне рассказать.
Как ни крути, придется обратиться к какому-нибудь внешнему сервису.
Как было справедливо замечено ipsee использовать не очень хочется, так как они в олюбой момент могут изменить дизайн своей страницы (например, добавить туда больше рекламы), и тогда "выкусить" оттуда свой IP-щник будет не просто.
Можно для этой цели создать свой собственный сервис, наприер, Dr_Grizzly@narod.ru/ipview. HTML страница на сервере должна содержать только
Код: Выделить всё
<!--#echo var="REMOTE_ADDR"-->
-
- Сообщения: 22
- Зарегистрирован: 24 мар 2009, 13:25
- Откуда: St.Petersburg
свой внешний можно следующим способом:
>traceroute http://www.google.ru - для *nix
>tracert http://www.google.ru -- для windows
в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.
>traceroute http://www.google.ru - для *nix
>tracert http://www.google.ru -- для windows
в результате ищем первую строчку, не являющуюся приватным IP по RFC 1918. Она и будет содержать ваш публичный IP-адрес.
Это не правда." писал(а):в результате ищем первую строчку, не являющуюся приватным 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]
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 22
- Зарегистрирован: 24 мар 2009, 13:25
- Откуда: St.Petersburg
согласен ))
только мне не понятно, почему я не прав.
Может потому, что для того комп-ра, который Gateway, печатается только внутренний IP ?
только мне не понятно, почему я не прав.
Может потому, что для того комп-ра, который Gateway, печатается только внутренний IP ?
Зачем же, всё уже давно создано ;Naeel Maqsudov писал(а): Можно для этой цели создать свой собственный сервис
http://www.whatismyip.com/automation/n09230945.asp
Код: Выделить всё
var
ip : string;
begin
ip := idHTTP.Get('http://www.whatismyip.com/automation/n09230945.asp');
...
end;
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Ай маладца!!! Огромное СПАСИБО
Реально выручил ))))))))

Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD
