示例:获取本机IP地址
说明:
通常,主机上的接口被静态地指定一个IP地址,或者是由配置协议来分配,如动态主机配置协议(DHCP)。如果 DHCP 服务器不能到达,系统会使用Automatic Private IP Addressing (APIPA),自动分配169.254.0.0/16范围内的地址。
代码:
unit uGetAllIps;
interface
uses
SysUtils,Classes;
procedure GetAllIps(AList: TStrings);
implementation
uses WinSock2,uInitSock;
procedure GetAllIps(AList: TStrings);
type
TPChar = array[0..0] of PChar;
PPChar = ^TPChar;
var
szHost: array[0..255] of Char;
pHost: PHostEnt;
h_addr_list: PPChar;
i: integer;
p,szIp: PChar;
addr: TInAddr;
begin
AList.Clear;
//---
gethostname(szHost,length(szHost)); //--取得本地主机名称
pHost := gethostbyname(szHost); //--通过主机名得到地址信息
//---输出所有IP地址
h_addr_list := PPChar(pHost.h_addr_list);
//---
i := 0;
while true do
begin
p := h_addr_list[i];
if p = nil then
break;
//---
move(p^,addr.S_addr,pHost.h_length);
szIp := inet_ntoa(addr);
AList.Add(format('本机IP地址:%s', [szIp]));
//--
inc(i);
end;
end;
end.