![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с получением имени хоста по его адресу [D5]
PVK © (2001-10-16 17:38:00)Здравствуйте.
При попытке получить имя хоста по его адресу возвращается
ошибка WSANO_DATA: Valid name, no data record of requested type.
Фрагмент кода
uses winsock;
...
var
DestAddres:In_addr;
pHostEn:PHostEnt;
error:DWord:
HostName:string;
begin
HostName:="127.0.0.1";
DestAddress.S_addr:=inet_addr(PChar(HostName));
if DestAddress.S_addr=-1
then pHostEn := gethostbyname(PChar(HostName)) //OK
else pHostEn :=gethostbyaddr(PChar(@DestAddress),sizeOf(in_addr),AF_INET ); //Error
error := GetLastError();
end;
Подскажите в чем дело.
Заранее благодарен. (pvk21@list.ru)
Wonder (2001-10-16 18:11:00) [1]
var
pHostEn : PHostEnt;
destAddress : in_addr;
destHost : PChar;
...
begin
...
pHostEn := gethostbyname(destHost);
if (pHostEn = nil) then begin
//видимо введен IP адрес. Проверим это:
destAddress := in_addr(inet_addr(destHost));
if destAddress.S_addr = u_long(INADDR_NONE) then
begin
//неправильное имя хоста или введен не IP адрес
Exit;
end;
//Был введен IP адрес. Попробуем узнать имя хоста
pHostEn := gethostbyaddr(@destAddress, 4, PF_INET);
if (pHostEn = nil) then
begin
//Имя хоста не разрешается
end
else
destAddress := PInAddr(pHostEn^.h_addr_list^)^;
end;
...