如何取得本机的IP地址(50分)

  • 主题发起人 主题发起人 jdxjf
  • 开始时间 开始时间
J

jdxjf

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中获取本机的IP地址,最好不用调用API函数。
 
以下这个程序可以得到本机IP地址和计算机名:

uses Winsock;

... ...

procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{获得计算机名}
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
{获得本机的ip地址}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
{Shut down WinSock}
WSACleanup;
end;
 
这是我抄的。

uses winsock;
...

function GetIPAddress: string;
var
phoste:PHostEnt;
Buffer:array[0..100] of char;
WSAData:TWSADATA;
begin
result:='';
if WSASTartup($0101, WSAData) <> 0 then exit;
GetHostName(Buffer,Sizeof(Buffer));
phoste:=GetHostByName(buffer);
if phoste = nil then
begin
result:='127.0.0.1';
end
else
result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
WSACleanup;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=GETIPAddress;
end;
 
多人接受答案了。
 
后退
顶部