нексолько ip адресов на компе
От: c0mbinator  
Дата: 17.03.06 07:11
Оценка:
Есть функция gethostbyname(), которая возвращает указатель на структуру hostent, откуда мы можем извлечь ip-адрес машины.
Но если у машины несколько Ip-адресов (например несколько сетевых адаптеров). Как в этом случае узнать все IP-адреса машины?

P.S. В принципе я догадываюсь, как это можно сделать: в hostent есть поле h_addr_list.
В нем находятся все IP адреса сетевых интрефейсов? Проверить это сам я не могу, так как у меня всего один адаптер.
Re: нексолько ip адресов на компе
От: NeuroVirus Россия  
Дата: 17.03.06 07:13
Оценка:
Здравствуйте, c0mbinator, Вы писали:

C>Есть функция gethostbyname(), которая возвращает указатель на структуру hostent, откуда мы можем извлечь ip-адрес машины.

C>Но если у машины несколько Ip-адресов (например несколько сетевых адаптеров). Как в этом случае узнать все IP-адреса машины?

C>P.S. В принципе я догадываюсь, как это можно сделать: в hostent есть поле h_addr_list.

C>В нем находятся все IP адреса сетевых интрефейсов? Проверить это сам я не могу, так как у меня всего один адаптер.

именно там и находится список адресов
а кто мешает назначить несколько IP адресов одному адаптеру?
Re: нексолько ip адресов на компе
От: butcher Россия http://bu7cher.blogspot.com
Дата: 17.03.06 08:20
Оценка:
Здравствуйте, c0mbinator, Вы писали:

C>P.S. В принципе я догадываюсь, как это можно сделать: в hostent есть поле h_addr_list.

C>В нем находятся все IP адреса сетевых интрефейсов? Проверить это сам я не могу, так как у меня всего один адаптер.

[network] Определение своего IP адреса
Автор: butcher
Дата: 19.07.04

Re[7]: Веб-сервер в локальной сети
Автор: butcher
Дата: 28.06.04

Нет ничего невозможного..
Re[2]: нексолько ip адресов на компе
От: NeuroVirus Россия  
Дата: 17.03.06 08:45
Оценка:
Здравствуйте, butcher, Вы писали:

B>Здравствуйте, c0mbinator, Вы писали:


C>>P.S. В принципе я догадываюсь, как это можно сделать: в hostent есть поле h_addr_list.

C>>В нем находятся все IP адреса сетевых интрефейсов? Проверить это сам я не могу, так как у меня всего один адаптер.

B>[network] Определение своего IP адреса
Автор: butcher
Дата: 19.07.04

B>Re[7]: Веб-сервер в локальной сети
Автор: butcher
Дата: 28.06.04


ну и на Delphi — до кучи



function GetLocalAddresses(sl: TStrings): boolean;
var
  buf: array[0..255] of char;
  pHE: PHostEnt; pInAd: PInAddr; pwpc: ^PChar;
begin
  sl.BeginUpdate;
  try
    sl.Clear;
    Result := (gethostname(@buf, SizeOf(buf)) = 0);
    if not Result then Exit;
    pHE := gethostbyname(@buf);
    Result := Assigned(pHE);
    if not Result then Exit;
    pwpc := pointer(pHE^.h_addr_list);
    pInAd := pointer(pwpc^);
    while (pInAd <> NIL) do begin
      sl.Add(StrPas(inet_ntoa(pInAd^)));
      pwpc := pointer(PChar(pwpc) + SizeOf(pointer));
      pInAd := pointer(pwpc^);
    end;
  finally
    sl.EndUpdate;
  end;
end;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.