delphi获取本机IP地址

   获取本机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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi是一种流行的编程语言,可以用来开发Windows操作系统上的应用程序。要获取本机的网卡信息,包括IPv6地址信息,可以使用Delphi提供的一些函数和类。 首先,我们可以使用`TIdStack`类来获取本机所有的IP地址。`TIdStack`是Delphi中用于处理网络与套接字编程的类。可以通过调用`TIdStack.LocalAddress`方法来获取本机IP地址列表。这个方法返回一个`TIdStackLocalAddressList`对象,其中包含了获取到的IP地址的详细信息,包括IPv6地址信息。 下面是一个示例代码,展示了如何获取本机的网卡信息和IPv6地址信息: ```delphi uses IdStack; procedure GetLocalNetworkCardInfo; var Stack: TIdStack; LocalAddressList: TIdStackLocalAddressList; I: Integer; begin Stack := TIdStack.Create; LocalAddressList := TIdStackLocalAddressList.Create; try Stack.GetLocalAddressList(LocalAddressList); for I := 0 to LocalAddressList.Count - 1 do begin // 输出网卡信息 Writeln('网卡名称:', LocalAddressList[I].InterfaceName); Writeln('IPv4地址:', LocalAddressList[I].IPAddress); // 输出IPv6地址信息 if LocalAddressList[I].IPVersion = Id_IPv6 then begin Writeln('IPv6地址:', LocalAddressList[I].IPAddress); Writeln('IPv6标识:', LocalAddressList[I].IP6LocalLink.Address.S6_addr); end; Writeln('-----------------'); end; finally LocalAddressList.Free; Stack.Free; end; end; ``` 在上述代码中,我们首先创建了一个`TIdStack`对象和一个`TIdStackLocalAddressList`对象。然后,调用`GetLocalAddressList`方法来将本机的网卡信息存储到`LocalAddressList`对象中。接下来,我们遍历`LocalAddressList`对象,输出每个网卡的名称和IPv4地址。如果网卡支持IPv6,我们还输出其IPv6地址和IPv6标识。 以上就是使用Delphi获取本机网卡信息(包括IPv6地址信息)的方法。希望对你有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值