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

Вниз

Winsock: Помогите получить адреса из списка   Найти похожие ветки 

 
Micah'GF   (2004-05-30 11:04) [0]

Есть такая структура:
 hostent = record
   h_name: PChar;
   h_aliases: ^PChar;
   h_addrtype: Smallint;
   h_length: Smallint;
   case Byte of
     0: (h_addr_list: ^PChar);
     1: (h_addr: ^PChar)
 end;


Заполняю эту структуру так:
 GetHostName(buf,255);
 RemoteHost :=  GetHostByName(buf);

..h_addr_list должна теперь указывать на список IP-адресов..  извлекаю так:
 Adress.S_addr := longint(pointer(RemoteHost^.h_addr_list^)^);
..извлекается только первый.. Пытаюсь так:
 Adress.S_addr := longint(pointer(RemoteHost^.h_addr_list^[2])^);
выдает ошибку... В списке точно несколько IP - h_length показывает 4.
Как правильно сделать?


 
Verg ©   (2004-05-30 12:12) [1]


var Adr : ^PInAddr;
    Ph  : PHostEnt;
............
   Adr := pointer(Ph.h_addr_list);
   while Adr^ <> nil do
   begin
     Writeln(inet_ntoa(Adr^^));
     inc(Adr);
   end;


 
Micah'GF   (2004-05-30 21:17) [2]

спасибо.. помогло:
RemoteHost : PHostEnt;
Adress: TInAddr;
PInAdress: ^PInAddr;

...
   RemoteHost := GetHostByName(buf);
   PInAdress := pointer(RemoteHost^.h_addr_list^);
   if PInAdress^ = NIL then
     Adress.S_addr := htonl($7F000001)  (* 127.0.0.1 *)
   else begin
     inc(PInAdress, select);
     Adress.S_addr := longint(PInAdress^);
   end;



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-1089543562
ltexcimer
2004-07-11 14:59
2004.07.25
максимальный размер переменной и запись в файл


14-1088838650
Knight
2004-07-03 11:10
2004.07.25
Что в психушках вообще туго с финансированием стало?


1-1089791241
mishabik
2004-07-14 11:47
2004.07.25
Отладчик Delphi


14-1088593848
Piter
2004-06-30 15:10
2004.07.25
Дремучие тормозят


1-1089433992
set
2004-07-10 08:33
2004.07.25
Приостановка цикла для ввода дополнительных данных