Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.023 c
3-1088573748
Ratiborr
2004-06-30 09:35
2004.07.25
На сколько облегчает DLL


3-1088664487
AlexanderSK
2004-07-01 10:48
2004.07.25
Ошибка при восстановление БД из backup-а


8-1083840133
lexx_av
2004-05-06 14:42
2004.07.25
Построение графика с помощью tchart


14-1088927233
Masloff
2004-07-04 11:47
2004.07.25
Где взять драйвера под Motorola c650?


14-1089200698
GanibalLector
2004-07-07 15:44
2004.07.25
BPWin




   Наверх