Delphi XE5 实现获取本地的IP地址


本文整理自网络,侵删。

 

介绍

本文章介绍了通过Delphi XE5 实现获取本地的IP地址,在使用代码之前,需要引用winsock单元,目前测试了获取IP4没问题,但是并没有测试获取IP6是否有问题,大家可以试试,有结果的可以告诉我下,谢啦

主要的获取IP地址的代码是:

function MYComputerName: string;
var
  FStr: PChar;
  FSize: Cardinal;
begin
  FSize := 255;
  GetMem(FStr, FSize);
  Winapi.Windows.GetComputerName(FStr, FSize);
  Result := FStr;
  FreeMem(FStr);
end;

function GetLocalIpList(var IpList: TStringList): Integer;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  HostName: array[0..MAX_PATH] of AnsiChar;
  NameLen: Integer;
  WSData: TWSAData;
  lpHostEnt: PHostEnt;
  I: Integer;
  pptr: PaPInAddr;
begin
  Result := 0;
  if WSAStartup(MakeWord(2, 0), WSData) <> 0 then
    Exit;
  try
    NameLen := sizeof(HostName);
    fillchar(HostName, NameLen, 0);
    NameLen := GetHostName(HostName, NameLen);
    if NameLen = SOCKET_ERROR then
      Exit;
    lpHostEnt := GetHostByName(HostName);
    if lpHostEnt = nil then
      Exit;
    I := 0;
    pPtr := PaPInAddr(lpHostEnt^.h_addr_list);
    IpList.Clear;
    while pPtr^[I] <> nil do
      begin
        IpList.ADD(inet_ntoa(pptr^[I]^));
        Inc(I);
      end;
    Result := IpList.Count;
  finally
    WSACleanup;
  end;
end;

相关阅读 >>

Delphi 2010下使用sqlitesimpleDelphi连接sqlite数据库及中文乱码问题的解决

Delphi firedac 连接access mdb数据库的方法

Delphi 自动把combobox控件的内容里没有的内容加入列表中

Delphi 为idhttp伪造session

Delphi 调试ios时出现 please specify exact device preset uuid

Delphi 删除动态数组的指定元素

Delphi 取出鼠百标点击的 stringgrid 中某单度元格的值

Delphi 数字分隔

Delphi获取系统电源状态的信息

Delphi 常用api 函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...