Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как можно из url получить IP?


Автор: Elfebet 31.8.2006, 18:47
вот я к примеру хочу получить IP сайта http://forum.vingrad.ru.
как это сделать?

Автор: demon13 31.8.2006, 18:57
Elfebet,  посмотри в этой http://delphi7coder.narod.ru/Delphi/Project1.rar вкрадку"Pinger" если то то вылложу исходник smile

Добавлено @ 19:00 
Цитата(Elfebet @  31.8.2006,  18:47 Найти цитируемый пост)
вот я к примеру хочу получить IP сайта http://forum.vingrad.ru.

IP аддрес forum.vingrad.ru 62.75.204.171 smile 

Автор: demon13 31.8.2006, 19:13
через Whois тоже можно, но там много инфы лишней и Whois'ы работают с доменами 1-го уровня, а Пингом можно любова домена IP'шник получить и извлечь его оттуда проще smile  

Автор: DemoCode 31.8.2006, 19:16
Цитата(demon13 @  31.8.2006,  20:13 Найти цитируемый пост)
через Whois тоже можно, но там много инфы лишней и Whois'ы работают с доменами 1-го уровня

Во-во... поэтому и затёр, чтоб не наставлять на путь неверный. smile

Добавлено @ 19:19 
Быстрее и проще так.
Подключаем WinSock и:

Код

function HostToIP(Name: string; var Ip: string): Boolean; 
var 
wsdata : TWSAData; 
hostName : array [0..255] of char; 
hostEnt : PHostEnt; 
addr : PChar; 
begin 
WSAStartup ($0101, wsdata); 
try 
gethostname (hostName, sizeof (hostName)); 
StrPCopy(hostName, Name); 
hostEnt := gethostbyname (hostName); 
if Assigned (hostEnt) then 
if Assigned (hostEnt^.h_addr_list) then begin 
addr := hostEnt^.h_addr_list^; 
if Assigned (addr) then begin 
IP := Format ('%d.%d.%d.%d', [byte (addr [0]), 
byte (addr [1]), byte (addr [2]), byte (addr [3])]); 
Result := True; 
end 
else 
Result := False; 
end 
else 
Result := False 
else begin 
Result := False; 
end; 
finally 
WSACleanup; 
end 
end; 

Автор: demon13 31.8.2006, 19:36
Да уж Пингер отдыхает smile 

Автор: Elfebet 1.9.2006, 09:15
DemoCode, спасибо! smile 

Автор: Elfebet 1.9.2006, 13:36
слушай DemoCode, а что это за цифра $0101?
Код

WSAStartup ($0101, wsdata);

пробовал перевести твой код на СBuilder, но там этот код не работает smile 
я тут посмотрел что в в делифи функция WSAStartup ($0101, wsdata); возвращает 0, а в билдере 10014.

Автор: Snowy 1.9.2006, 13:43
$0101 - говорит, что щас мы будем юзать сокеты версии 1.1
Дело скорее не в цыферках, а в wsadata или объявлении WSAStartup.
Вероятно нужно передать указатель на неё, а не саму wsadata

Автор: Elfebet 1.9.2006, 13:54
ТОЧНО!!!! спасибо!

Автор: GoingOnward 24.4.2007, 04:11
или поставь -  WSAStartup(MAKEWORD(1,1), FData);

Автор: DemoCode 24.4.2007, 13:41
GoingOnward,  smile мне кажется за 8 месяцев Elfebet, как-то решил эту проблему,  smile наверное.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)