Форум: "Сети";
Текущий архив: 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.006 c