![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как зная IP адрес узнать имя компьютера?
SiONYX © (2003-09-09 02:30:00)
Собственно сабж :)
Zeon (2003-09-10 02:15:00) [1]
function GetHostByIP(IPAddr: String): String;
var
Error: DWORD;
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
Data: TWSAData;
begin
Result:="Error";
Error:=WSAStartup($101, Data);
if Error = 0 then begin
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then Result:=StrPas(Hostent^.h_name);
end; // Error=0
WSACleanup();
end;
Вася Пупкин (2003-09-10 01:32:00) [2]
addr
[in] Pointer to an address in network byte order
Например:
Addr := inet_addr(PChar(ParamStr(1)));
или
Addr := inet_addr("127.0.0.1");
Вася Пупкин (2003-09-10 01:30:00) [3]
........
hp:=gethostbyaddr(pchar(@Addr),SizeOf(Addr),AF_INET);
if hp=nil then
begin
writeln("gethostbyaddr() failed. Error: ",WSAGetLastError());
ExitProcess(STATUS_FAILED);
end;
Вася Пупкин (2003-09-10 01:30:00) [4]
........
hp:=gethostbyaddr(pchar(@Addr),SizeOf(Addr),AF_INET);
if hp=nil then
begin
writeln("gethostbyaddr() failed. Error: ",WSAGetLastError());
ExitProcess(STATUS_FAILED);
end;
SiONYX (2003-09-10 00:53:00) [5]
В "Королевстве Дельфи" нашел следующее:
Как-то чудно ведет себя функция gethostbyaddr.
Если после запуска программы я сначала нахожу ip адрес
по имени компа при помощи gethostbyname, а потом обращаюсь
к нему при помощи gethostbyaddr - все Ok.
Но если обращаться сразу при помощи gethostbyaddr - результат Nil.
Ответа на вопрос нет. Может кто что знает?
SiONYX (2003-09-10 00:51:00) [6]
Вопрос о параметрах:
Что за последний параметр функции? В Developer"s References (SDK поставляемое с Дельфи) параметра описан как int type, в модуле WinSock описан как Struct:integer.
Но при этом каких либо комментариев в референсес я не нашел.
Я поптался сделать так (я разбил на две строки, чтобы исключить возможность неправильной конвертации типа - конвертируется верно):
pAddr:=PChar(Addr);
HE:=gethostbyaddr(pAddr,Length(Addr),0);
Постоянно выдает nil
Может я что не так делаю?
panov (2003-09-09 09:37:00) [7]
gethostbyaddr