获取网卡信息01

1、

http://bbs.csdn.net/topics/390492221

http://www.myexception.cn/vc-mfc/1734639.html

http://www.itnose.net/detail/6085807.html

http://blog.csdn.net/earbao/article/details/23361437

http://bbs.csdn.net/topics/320251549

http://www.cnblogs.com/nodegis/p/5808515.html

http://jingyan.baidu.com/article/a3761b2b693d1d1576f9aa14.html

http://www.cnblogs.com/L-hq815/archive/2012/08/04/2622829.html

2、Delphi资料(GetAdaptersInfo)

http://blog.csdn.net/yanjiaye520/article/details/7702409  据说可以得到外网IP

http://www.delphitop.com/html/wangluo/1937.html

 

2.1、测试代码:

  (1)、

//常量定义
Const
  MAX_HOSTNAME_LEN               = 128;
  MAX_DOMAIN_NAME_LEN            = 128;
  MAX_SCOPE_ID_LEN               = 256;
  MAX_ADAPTER_NAME_LENGTH        = 256;
  MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
  MAX_ADAPTER_ADDRESS_LENGTH     = 8;
//定义相关结构
Type
  TIPAddressString = Array[0..4*4-1] of Char;

  PIPAddrString = ^TIPAddrString;
  TIPAddrString = Record
    Next      : PIPAddrString;
    IPAddress : TIPAddressString;
    IPMask    : TIPAddressString;
    Context   : Integer;
  end;

  PFixedInfo = ^TFixedInfo;
  TFixedInfo = Record { FIXED_INFO }
    HostName         : Array[0..MAX_HOSTNAME_LEN+3] of Char;
    DomainName       : Array[0..MAX_DOMAIN_NAME_LEN+3] of Char;
    CurrentDNSServer : PIPAddrString;
    DNSServerList    : TIPAddrString;
    NodeType         : Integer;
    ScopeId          : Array[0..MAX_SCOPE_ID_LEN+3] of Char;
    EnableRouting    : Integer;
    EnableProxy      : Integer;
    EnableDNS        : Integer;
  end;

  PIPAdapterInfo = ^TIPAdapterInfo;
  TIPAdapterInfo = Record { IP_ADAPTER_INFO }
    Next                : PIPAdapterInfo;
    ComboIndex          : Integer;
    AdapterName         : Array[0..MAX_ADAPTER_NAME_LENGTH+3] of Char;
    Description         : Array[0..MAX_ADAPTER_DESCRIPTION_LENGTH+3] of Char;
    AddressLength       : Integer;
    Address             : Array[1..MAX_ADAPTER_ADDRESS_LENGTH] of Byte;
    Index               : Integer;
    _Type               : Integer;
    DHCPEnabled         : Integer;
    CurrentIPAddress    : PIPAddrString;
    IPAddressList       : TIPAddrString;
    GatewayList         : TIPAddrString;
    DHCPServer          : TIPAddrString;
    HaveWINS            : Bool;
    PrimaryWINSServer   : TIPAddrString;
    SecondaryWINSServer : TIPAddrString;
    LeaseObtained       : Integer;
    LeaseExpires        : Integer;
  end;

  function GetAdaptersInfo(AI : PIPAdapterInfo; var BufLen : Integer) : Integer;StdCall;external 'iphlpapi.dll';

  (2)、

procedure GetIPAdapterInfo;//获取外网IP
var adapterInfo, pInfo : PIPAdapterInfo;
    iSize    : Integer;
    iRes     : Integer;
    ipAddrStr :TIPAddrString;
    pIpAddrStr :PIPAddrString;
    i :Integer;
    strMac :string;
begin
  iSize := 5120;
  GetMem(adapterInfo, iSize);
  iRes := GetAdaptersInfo(adapterInfo, iSize);
  If (iRes <> ERROR_SUCCESS) Then
  begin
     MessageBoxA(0,'获取IP信息失败', '错误', MB_OK or MB_ICONERROR);
     exit;
  end;
  pInfo := adapterInfo;
  repeat  //
    frmMain.Memo1.Lines.Add('['+IntToStr(pInfo.Index)+']');      // 序号
    frmMain.Memo1.Lines.Add('   '+pInfo.Description);            // 描述
    frmMain.Memo1.Lines.Add('   '+pInfo.AdapterName);            //
    frmMain.Memo1.Lines.Add('   '+IntToStr(pInfo.AddressLength));// MAC地址的长度
    // MAC地址
    strMac := '';
    for i:=1 to pInfo.AddressLength do
    begin
      strMac := strMac + IntToHex(pInfo.Address[i], 2);
      if (i <> pInfo.AddressLength) then
        strMac := strMac + ':';
    end;
    frmMain.Memo1.Lines.Add('   '+strMac);
    // IP地址
    ipAddrStr := pInfo.IPAddressList;
    frmMain.Memo1.Lines.Add('   --> '+ipAddrStr.IPAddress);
    pIpAddrStr := ipAddrStr.Next;
    while pIpAddrStr<>nil do
    begin
      frmMain.Memo1.Lines.Add('   ---> '+pIpAddrStr.IPAddress);
      pIpAddrStr := pIpAddrStr.Next;
    end;
    
    pInfo := pInfo^.Next;
  until (pInfo = nil);
  FreeMem(adapterInfo);
end;

 

3、

4、

5、

 

posted @ 2016-11-26 20:12  CppSkill  阅读(286)  评论(0编辑  收藏  举报