在delphi中怎样得到本机TCP/IP地址,使用API函数,gethostname,gethostbyname,但不知第二个函数的使用方法(80分)

  • 主题发起人 主题发起人 lsha
  • 开始时间 开始时间
L

lsha

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi中怎样得到本机TCP/IP地址,使用API函数,gethostname,gethostbyname,但不知第
二个函数的使用方法.使用第一个函数可以得到本机主机名,根据主机名,使用第二个函数可
以得到本机TCP/IP地址,但第二个函数的使用方法我不会,所以没有得到TCP/IP地址,请各位
高手指教,小弟先谢了(对不起,只有85分).
 
下面的代码可以实现你的要求。如果还想更深入了解你可以去 http://delphix.126.com
的控件仓库中下载netusers.zip,他的源码写的很好。

procedure TForm1.Button1Click(Sender: TObject);
var Ip,IpStr:string; ch:array[1..32]of char; i:integer;
WSData:TWSAData; MyHost:PHostEnt;
begin
if WSAstartup(2,WSData)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(2);
end;
try
if getHostName(@ch[1],32)<>0 then
begin
ShowMessage('没有成功返回!');
Halt(3);
end;
except
ShowMessage('没有成功返回!');
Halt(3);
end;
MyHost:=GetHostByName(@ch[1]);
if MyHost=NIL then
begin
ShowMessage('没有成功返回!');
Halt(4);
end
else
begin
for i:=1 to 4 do
begin
Ip:=inttostr(Ord(MyHost.h_addr^[i-1]));
ShowMessage('IP分段地址为:'+Ip);
IPStr:=IPStr+Ip;
if i<4 then IPStr:=IPStr+'.'
else ShowMessage('IP地址为:'+IPStr);
end;
end;
end;
 
wangjerry,谢谢你.
 
后退
顶部