Главная страница
    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.007 c
7-70044
Delphimun
2002-01-27 15:54
2002.04.22
Существует ли в Способ запустить пргу ещё до загрузки windows(в dos)


3-69667
ghost_by
2002-03-30 20:21
2002.04.22
Interbase: Maximum user count exceeded.


4-70068
Fredy
2002-02-16 23:22
2002.04.22
Как запустить ScreenSaver ?


3-69712
Timka
2002-03-26 18:54
2002.04.22
Помогите серенькому!!!


6-69956
Niflhelmr
2002-02-11 16:17
2002.04.22
LDAP components?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский