Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Получить ip по host и в -> TInAddr


Автор: RinOSpro 10.1.2008, 19:51
Есть функция
 
Код

function LookupName(ToIPHost : string): TInAddr;
var
 HostEnt: PHostEnt;
 InAddr: TInAddr;
begin
  HostEnt := gethostbyname(PChar(ToIPHost));
  FillChar(InAddr, SizeOf(InAddr), 0);
  if HostEnt <> nil then
   begin
    with InAddr, HostEnt^ do
     begin
      S_un_b.s_b1 := h_addr^[0];
      S_un_b.s_b2 := h_addr^[1];
      S_un_b.s_b3 := h_addr^[2];
      S_un_b.s_b4 := h_addr^[3];
     end;
   end;
  Result := InAddr;
end;


Код

Remote.addr := LookupName(ToIP);


если я передаю ей ип то все работает а если имя хоста то не работает... Подскажите в чем дело? Или может есть более хороший пример!

Автор: Sanchezzz 10.1.2008, 20:49
Код

function Mу_HostToIP(Host: PChar): PChar;
type
 TaPInAddr = array [0..10] of PInAddr;
 PaPInAddr = ^TaPInAddr;
var
  WSAData: TWSAData;
 phe           : PHostEnt;
 p             : PaPInAddr;
begin
Result := nil;
WSAStartup($0101, WSAData);
phe := gethostbyname(Host);
if phe = nil then
 Exit;
p := PaPInAddr(phe^.h_addr_list);
if p^[0] <> nil then begin
 Result := inet_ntoa(p^[0]^);
end;
WSACleanup;
end;


//пользоватся
Showmessage(strpas(My_HostToIP('COMP')));

// у тебя в коде есть WSAStartup  без него мой пример не корректно работает... 

Автор: RinOSpro 10.1.2008, 21:48
Sanchezzz у меня как раз стартупа то и нету, и его запускаю перед вызовом этой функции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)