Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Gromada ©   (2005-06-03 12:33:00) 

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


Ozone   (2005-06-06 13:51:00) [1]

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

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

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


Глеб   (2005-06-06 07:54:00) [2]


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;


KorvinOE   (2005-06-04 11:53:00) [3]

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

uses
 IdStack, IdComponent;

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

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


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


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

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


Digitman   (2005-06-03 13:29:00) [5]


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


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


-=S.S=-   (2005-06-03 13:19:00) [6]

Вот самому недавно требовалось :)
Есно 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:11:00) [7]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо