Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Как зная 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-69677
tovSuhov
2002-03-29 14:36
2002.04.22
Люди, ну не оставляйте в беде...


3-69683
tovSuhov
2002-03-29 12:49
2002.04.22
Передача и получение параметров...


1-69856
JMax
2002-04-09 06:43
2002.04.22
Мышь


1-69793
$hiC0
2002-04-10 13:49
2002.04.22
Снова PrintDialog возможно PrintersetupDialog :)


1-69775
snoup
2002-04-07 21:38
2002.04.22
Как сделать скриншот своей проги?