获取本机IP(不能获取内网中的外网IP):
uses 中加入 winsock:
function GetLocalIP:string; type TaPInAddr = array [0..10] of PInAddr; //用于存储活动的ip地址列表 PaPInAddr = ^TaPInAddr; var phe : PHostEnt; pptr : PaPInAddr; Buffer : array [0..63] of char; //store hostname I : Integer; GInitData : TWSADATA; wVersion:word; begin wVersion:=MAKEWORD(1,1); //winsock dll version Result :=''; if WSAStartup(wVersion, GInitData)=0 then //初始化windows socket begin if GetHostName(Buffer, SizeOf(Buffer))=0 then //计算机名称 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; //关闭、清理windows socket end; end;
有点遗憾,如果机器有两张网卡。获取到的IP是第二张网卡的IP。。。
获取外网IP函数(通过IP138获取):
function TForm1.GetIP: string; var r: string; p1, p2: Integer; begin r:=idhttp1.get('http://www.net.cn/static/customercare/yourIP.asp'); p1 := Pos('<h2>', r); // 找到 h2 标签 p2 := Pos('</h2>', r); // 找到 h2 结束标签 Result := Copy(r, p1 + 4, p2 - p1 - 4); end;
直接调用就行了!
标签:delphi
发表评论