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

示例:获取本机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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值