如何实现获取本机IP地址?
解决方案 »
- 动态DBEdit的OnExit事件
- 请问谁有leadtools V12这个 版本?
- 用DELPHI做类似资源管理器的树,且树节点处带选择框。如何做?
- 如何实现在1分钟后关闭窗体?能否给个源码?谢谢!在线等!
- 关于DBGrid与 复选框 的问题 急用!急用!
- 清高手指点对象类别和对象类型的区别是什么?感激不尽!
- 放分了~~感谢小小的com+ 和分布式开发
- 怎样读出"Blob memo"中的内容?
- 关于fastreport的合计框(memo)的数字转化为中文大写问题!
- ===高手了来呀===问一个小问题===关于PCHAR 和 STRING 之间转换的问题。。。
- 关于delphi下功能最全面的报表控件讨论(灌水)
- 如何在ProgressBar上显示数字
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]^));
inc(i);
end;
WSACleanup;
end;
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;
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]^));
Inc(I);
end;
WSACleanup;
end;
function TForm1.nametoip(name:string):string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
result:='';
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(name));
if HostEnt <> nil then
begin
with HostEnt^ do
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;
WSocket.LocalIPList.Text
在http://www.overbyte.be 或 http://www.rtfm.be/fpiette