当前位置: 首页 > 技术文档 > 正文

获取本机IP(不能获取内网中的外网IP): uses 中加入 winsock: 有点遗憾,如果机器有两张网卡。 […]

获取本机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;

直接调用就行了!

本文固定链接: https://blog.meyisi.cn/jishu/51.html | 么意思博客
标签:

delphi 获取本机内网IP或外网IP函数:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter