delphi获取本机IP地址

本文介绍了一种使用Windows API在Delphi中获取本机IP地址的方法。通过调用GetHostName和GetHostByName等函数,可以实现从主机名到IP地址的转换。需要注意的是,若有多张网卡,此方法可能只返回最后一个网卡的IP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   获取本机ip地址,其实方法有很多了,现在用windows api 在delphi下实现如下;


1. 在uses 里引用 winsock 单元。


2. 源码如下:

 

[delphi]  view plain  copy
 print ?
  1. function GetLocalIP:string;  
  2. type  
  3.   TaPInAddr = array [0..10of PInAddr;   //用于存储活动的ip地址列表  
  4.   PaPInAddr = ^TaPInAddr;  
  5. var  
  6.   phe  : PHostEnt;  
  7.   pptr : PaPInAddr;  
  8.   Buffer : array [0..63of char;    //store hostname  
  9.   I    : Integer;  
  10.   GInitData      : TWSADATA;  
  11.   wVersion:word;  
  12. begin  
  13.   wVersion:=MAKEWORD(1,1);     //winsock dll version  
  14.   Result :='';  
  15.   if WSAStartup(wVersion, GInitData)=0 then   //初始化windows socket   
  16.   begin  
  17.     if GetHostName(Buffer, SizeOf(Buffer))=0 then  //计算机名称  
  18.         phe :=GetHostByName(buffer);  
  19.     if phe = nil then  
  20.        Exit;  
  21.     pptr := PaPInAddr(Phe^.h_addr_list);  
  22.     I := 0;  
  23.     while pptr^[I] <> nil do begin  
  24.       result:=StrPas(inet_ntoa(pptr^[I]^));  
  25.       Inc(I);  
  26.     end;  
  27.     WSACleanup;           //关闭、清理windows socket  
  28.   end;  
  29. end;  

3.该源码的不足的地方是如果机器上有2张及以上网卡,得到的是最后一个。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值