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、