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

Вниз

Последний раз про IP и GetHostByName   Найти похожие ветки 

 
chernoruk ©   (2002-05-13 07:53) [0]

Как же всё-таки узнать свой настоящий IP-адрес, если GetHostByName("localhost") всегда выдаёт 127.0.0.1?


 
Song ©   (2002-05-13 09:08) [1]

Function TForm1.GetHost:String; {Получение IP адреса}
Var WSAData:TWSAData;
p:PHostEnt;
Name:array [0..$FF] of Char;
Begin
WSAStartup($0101,WSAData);
GetHostName(Name, $FF);
p:=GetHostByName(Name);
Result:=inet_ntoa(PInAddr(p.h_addr_list^)^);
WSACleanup;
End;


 
Сатир   (2002-05-13 17:12) [2]

2Song
А какую нужно подключить библиотеку для типов и функций:
TWSAData, PHostEnt,WSAStartup, GetHostName,GetHostByName,
inet_ntoa.


 
Song ©   (2002-05-13 17:43) [3]

Uses WinSock


 
Сатир   (2002-05-13 19:39) [4]

2Song
спасибо, уже сам нашёл.
А TPowerSock где может быть?


 
Malder ©   (2002-05-13 21:29) [5]

Народ. Ну ответьте на следующий вопрос. А если имеется несколько интерфейсов, то как определить IP адреса в каждом их них ?


 
Song ©   (2002-05-13 21:35) [6]

2Malder © (13.05.02 21:29)
Тока по реестру.. Если 98SE


 
Malder ©   (2002-05-14 00:04) [7]

Song, ну это не выход... а если не 98SE ? Ведь WinIpCfg и ipconfig всегда все определяют хорошо ! КАК ОНИ ЭТО ДЕЛАЮТ ? СКОЛЬКО НЕ СПРАШИВАЛ - НИКТО НЕ ЗНАЕТ...


 
Song ©   (2002-05-14 00:08) [8]

:)))
А ты запускай WinIpCfg и ipconfig и анализируй ответ...


 
chernoruk ©   (2002-05-14 08:12) [9]

--->Song
Спасибо за работающий примерчик!


 
chernoruk ©   (2002-05-14 08:52) [10]

И ещё вопрос: что мы делаем выражениями типа PInAddr(...),
где PInAddr-какой-то тип-указатель?


 
Kaban   (2002-05-14 14:45) [11]

2Malder
Надо всего лишь поискать.
Посмотри исходники Network Adapter Monitor
http://users.pandora.be/dirk.claessens2/


 
Anatoly Podgoretsky ©   (2002-05-14 15:02) [12]

chernoruk © (14.05.02 08:52)
Это приседение типа


 
False_Delirium ©   (2002-05-15 01:01) [13]

// Гипотетически так должно быть верно
Function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;

Begin
WSAStartup($101, GInitData);
Result := "";
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
// Phe^.h_addr_list - должен содержать IPдля всех интерфейсов.
I := 0;
while pptr^[I] <> nil do begin
// приводим их по очерёдности к нормальному виду
Result := Result + StrPas(inet_ntoa(pptr^[I]^)) + "#10#13" ;
Inc(I);
end;
WSACleanup;
End;



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
3-81122
Evyshka
2002-07-02 17:00
2002.07.25
Индексы


14-81425
Ocean
2002-06-24 15:47
2002.07.25
Доступ к Sybase Anywhere, кроме ODBC


3-81185
Octav
2002-07-04 19:23
2002.07.25
Blob


8-81382
McSimm
2001-12-27 15:19
2002.07.25
3DS MAX как OLE-сервер


7-81501
ses1
2002-05-03 01:49
2002.07.25
Как определить тип монитора? Объем памяти видеоадаптера?