Qual é comando, ou melhor, como faço para adquirir o IP.....

Delphi

30/04/2003

Qual é comando, ou melhor, como faço para adquirir o IP da máquina que está executando aquele programa????

Obrigado
Gonçalves.


Goncalves

Goncalves

Curtidas 0

Respostas

Marcelo.c

Marcelo.c

30/04/2003

Talvez este código possa te ajudar:

Obter o endereço IP do Dial-Up

Inclua na seção uses: WinSock

{ Esta função retorna o endereço IP do Dial-Up. }



function GetLocalIP : 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);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
Observações

Se o endereço IP for designado pelo servidor, a cada conecção teremos um endereço IP diferente e, obviamente, se não estivermos conectados, não conseguiremos obtê-lo.


GOSTEI 0
Heitor

Heitor

30/04/2003

{ Aqui vai o código com a unit completa }

unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, WinSock,
StdCtrls;

type
TFrmMain = class(TForm)
BtIp: TButton;
procedure BtIpClick(Sender: TObject);
private
{ Private declarations }
function GetIP: String;
public
{ Public declarations }
end;

var
FrmMain: TFrmMain;

implementation
{$R *.DFM}

function TFrmMain.GetIP: String;
var WSAData: TWSAData;
HostEnt: PHostEnt;
Name: String;
begin
WSAStartup(2, WSAData);
SetLength(Name, 255);
Gethostname(PChar(Name), 255);
SetLength(Name, StrLen(PChar(Name)));
HostEnt := gethostbyname(PChar(Name));

with HostEnt^ do
begin
Result := Format(´¬d.¬d.¬d.¬d´,[Byte(h_addr^[0]),Byte(h_addr^[1]),
Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;

procedure TFrmMain.BtIpClick(Sender: TObject);
begin
FrmMain.Caption := GetIp;
end;

end.


GOSTEI 0
POSTAR