《Windows网络与通信程序设计》——示例:获取本机IP地址

来源:互联网 发布:java bug管理工具 编辑:程序博客网 时间:2024/05/23 01:02

示例:获取本机IP地址

说明:

通常,主机上的接口被静态地指定一个IP地址,或者是由配置协议来分配,如动态主机配置协议(DHCP)。如果 DHCP 服务器不能到达,系统会使用Automatic Private IP Addressing APIPA,自动分配169.254.0.0/16范围内的地址。

 

代码:

unit uGetAllIps;

 

interface

 

uses

    SysUtils,Classes;

 

procedure GetAllIps(AList: TStrings);

 

implementation

 

uses WinSock2,uInitSock;

 

procedure GetAllIps(AList: TStrings);

type

    TPChar = array[0..0] of PChar;

    PPChar = ^TPChar;

var

    szHost: array[0..255] of Char;

    pHost: PHostEnt;

    h_addr_list: PPChar;

    i: integer;

    p,szIp: PChar;

    addr: TInAddr;

begin

    AList.Clear;

    //---

    gethostname(szHost,length(szHost)); //--取得本地主机名称

    pHost := gethostbyname(szHost); //--通过主机名得到地址信息

    //---输出所有IP地址

    h_addr_list := PPChar(pHost.h_addr_list);

    //---

    i := 0;

    while true do

    begin

        p := h_addr_list[i];

        if p = nil then

            break;

        //---

        move(p^,addr.S_addr,pHost.h_length);

        szIp := inet_ntoa(addr);

        AList.Add(format('本机IP地址:%s', [szIp]));

        //--

        inc(i);

    end;

end;

  

end.

原创粉丝点击