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

Вниз

Как я могу с помощью дельфи узнать IP моего компа??   Найти похожие ветки 

 
Gromada   (2005-06-03 12:33) [0]

Как я могу с помощью дельфи узнать IP моего компа??


 
Digitman ©   (2005-06-03 13:11) [1]

у компа может и не быть вообще никаких IP (тогда никто и ничто тебе не поможет), а может и целая куча их быть) ... тебя какой вариант интересует  - когда ни одного или когда куча ?)


 
-=S.S=- ©   (2005-06-03 13:19) [2]

Вот самому недавно требовалось :)
Есно Winsock в юзесы пропиши
var
 wVerReq: WORD;
 wsaData: TWSAData;
 i: pchar;
 h: PHostEnt;
 c: array[0..128] of char;
begin
 wVerReq := MAKEWORD(1, 1);
 WSAStartup(wVerReq, wsaData);
 GetHostName(@c, 128);
 h := GetHostByName(@c);
 ShowMEssage( h^.h_Name);
 i := iNet_ntoa(PInAddr(h^.h_addr_list^)^);
 Showmessage(i);
 WSACleanup;


 
Digitman ©   (2005-06-03 13:29) [3]


> -=S.S=- ©   (03.06.05 13:19) [2]


а если на компе нет ни одного сетевого интерфейса ?
или интерфейсов куча ?
или не каждый интерфейс ассоциирован со стеком протоколов TCP/IP ? Или TCP/IP вообще не инсталлирован ни для одного из интерфейсов ?


 
-=S.S=- ©   (2005-06-04 10:44) [4]


> Digitman ©   (03.06.05 13:29) [3]

В лутшем случае вернёт 127.0.0.1 ;)


 
KorvinOE ©   (2005-06-04 11:53) [5]

Я использую для этого Indy, а точнее два класа: TIdComponent и IdStack. А вот сама функция:

uses
 IdStack, IdComponent;

function IPAdress : String;
var b:TIdComponent;
begin
b:=TIdComponent.Create(Self);
Result:=GStack.LocalAddress;
b.Destroy;
end;

Такой вариант меня больше всего устраивает, особення если и так используешь Indy. :)


 
Глеб ©   (2005-06-06 07:54) [6]


function TForm1.GetServerIP: string;
var
 WSAData: TWSAData;
 SockAddrIn: TSockAddrIn;
 Host: PHostEnt;
 Localname: string;
 LocalIP: PChar;
begin
 if WSAStartup($101, WSAData) = 0 then begin
   Host := GetHostByName(@Localname[1]);
   if Host<>nil then begin
     SockAddrIn.sin_addr.S_addr:= longint(plongint(Host^.h_addr_list^)^);
     LocalIP := inet_ntoa(SockAddrIn.sin_addr);
     Result := LocalIP;
   end;
   WSACleanUp;
 end;
end;


 
Ozone ©   (2005-06-06 13:51) [7]

>  [6] Глеб ©   (06.06.05 07:54)

Вот скажи мне, чем твой код отличается от [2] если учесть [3] ?

По сабжу - используй библиотеку IpHlpAPI.dll. При желании описание сможешь найти на MSDN



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

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

Наверх




Память: 0.48 MB
Время: 0.031 c
4-1123174440
Serg1981
2005-08-04 20:54
2005.10.02
Источник бесперебойного питания


1-1126636918
TStas
2005-09-13 22:41
2005.10.02
Перехват сообщения


8-1115924815
syama
2005-05-12 23:06
2005.10.02
flash в delphi


1-1126078877
Vovka
2005-09-07 11:41
2005.10.02
Компонент который ынтерпретирует html теги


11-1107273219
TeNY
2005-02-01 18:53
2005.10.02
Динамически добавить строку в меню popup menu