Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

Как зная IP адрес компа в сети получить его имя?   Найти похожие ветки 

 
ctapik-net   (2002-01-18 06:52) [0]

Пробовал писать через gethostbyaddr, ничего не получилось, может у кого есть работающий пример, очень нужно. Заранее спасибо.


 
Anatoly Podgoretsky   (2002-01-18 09:51) [1]

Пример настолько простой, что просто смешно.

GetHostByAddr;
или с проверкой на ошибку if GetHostByAddr=nil then ShowMessages(...);


 
Anatoly Podgoretsky   (2002-01-18 09:54) [2]

Это если не использовать результат, а если результат нужен то

var
HostEnt : PHostEnt;

HostEnt := GetHostByAddr;


 
ctapik-net   (2002-01-18 13:26) [3]

Ну для меня это не так все просто, темболее ни разу этой функцией не пользовался.
Вот:
struct hostent FAR * gethostbyaddr (

const char FAR * addr,
int len,
int type
);


Parameters

addr

[in] A pointer to an address in network byte order.

len

[in] The length of the address.

type

[in] The type of the address.

Деляю так

Function GetHostNameByIP(IP : String) : String ;
Var
WSData : WSAData ;
wVersionRequested : Word ;
Len : Integer ;
P : PChar ;
HostEnt : PHostEnt ;
Begin
Result := "" ;
Try
If WSAStartup(wVersionRequested,WSData) = 0 Then Begin
Len := 260 ;
GetMem(P,Len) ;
StrPCopy(P,IP) ;
HostEnt := GetHostByAddr(P,Len,AF_INET) ;
If HostEnt<>Nil Then Begin
Result := HostEnt.h_name ;
End ;
FreeMem(P,Len) ;
End ;
Finally
WSACleanup ;
End ;
End ;

Но ничего не выходит!!!
Кстати если HostEnt <> Nil нужно освобождать из под него память или нет?


 
Wonder   (2002-01-18 14:17) [4]

var
pHostEn : PHostEnt;
lwsaData : WSAData;
destAddress : In_Addr;
destHost : PChar;
begin
destHost := "217.106.234.193";
destAddress := In_Addr(inet_addr(destHost));
if destAddress.S_addr = u_long(INADDR_NONE) then
//введен не IP адрес
begin
ShowMessage("Invalid IP");
Exit;
end;
WSAStartup($0101, lwsaData);
pHostEn := gethostbyaddr(@destAddress, 4, PF_INET);
if (pHostEn = nil) then
begin
ShowMessage("Error "+IntToStr(WSAGetLastError()));
WSACleanup;
Exit;
end;
WSACleanup;
ShowMessage(pHostEn^.h_name);
end;


 
ctapik-net   (2002-01-18 14:41) [5]

Спасибо большое Wonder! Оказывается мне еще учится и учится :)


 
Alexander   (2002-01-20 11:22) [6]

А у меня на строке
destAddress := In_Addr(inet_addr(destHost));
выдаётся "Access violation";


 
bw3d   (2002-02-13 07:57) [7]

ну вообщем всё клёво работает .......
я делал примерно так же .....
так что проблем ни у кого быть недолжно
а насчёт Access violation хз может версия делфы не та или винда сглючнула ........ бывае.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
3-69715
Макс
2002-03-06 11:14
2002.04.22
Запьсь JPEG в поле типа Image


1-69787
Андре_
2002-04-01 09:44
2002.04.22
XML


3-69757
Awex
2002-04-02 16:51
2002.04.22
Пострелятационная Cache от InterSystem


14-69996
Oleg Gashev
2002-03-14 22:46
2002.04.22
Release Notes


3-69714
Zak
2002-03-26 08:52
2002.04.22
JPG в базу данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский