[VB]获取本机的IP地址

Option Explicit

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function GetIpAddrTable Lib "IPHlpApi" (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long

Const Max_IP = 5

Type IPINFO
dwAddr As Long
dwIndex As Long
dwMask As Long
dwBCastAddr As Long
dwReasmSize As Long
UnUsed1 As Integer
UnUsed2 As Integer
End Type

Type MIB_IPADDRTABLE
dEntrys As Long
mIPInfo(Max_IP) As IPINFO
End Type

Type IP_Array
mBuffer As MIB_IPADDRTABLE
BufferLen As Long
End Type

Sub Main()
Start
End Sub

Public Function ConvertAddressToString(longAddr As Long) As String
Dim MyByte(3) As Byte
Dim Cnt As Long
CopyMemory MyByte(0), longAddr, 4
For Cnt = 0 To 3
ConvertAddressToString = ConvertAddressToString + CStr(MyByte(Cnt)) + "."
Next Cnt
ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1)
End Function

Public Sub Start()
Dim Ret As Long, Tel As Long
Dim bBytes() As Byte
Dim Listing As MIB_IPADDRTABLE
On Error GoTo End1
GetIpAddrTable ByVal 0&, Ret, True
If Ret <= 0 Then Exit Sub
ReDim bBytes(0 To Ret - 1) As Byte
GetIpAddrTable bBytes(0), Ret, False
CopyMemory Listing.dEntrys, bBytes(0), 4
MsgBox "找到 " & Listing.dEntrys & " 个IP地址!", 0, "提示"
For Tel = 0 To Listing.dEntrys - 1
CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel)) '拷贝整个结构到Listing
MsgBox "IP地址:" & ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr), 0, "提示"
Next
End
End1:
MsgBox "出错!", 0, "提示"
End
End Sub

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB.NET中获取局域网中的IP地址,可以使用System.Net.NetworkInformation命名空间中的相关类和方法。 首先,可以使用NetworkInterface类来获取本地计算机上的网络接口信息。可以通过NetworkInterface.GetAllNetworkInterfaces方法获取所有网络接口的列表,并遍历该列表来获取每个网络接口的信息。 然后,可以根据每个网络接口的信息,使用IPInterfaceProperties类中的UnicastAddresses属性获取每个接口的单播地址列表。从这个列表中,可以筛选出是IPv4地址、非回环地址、以太网地址等符合条件的IP地址。 最后,将符合条件的IP地址存储在一个集合中,并将其打印出来或进行其他处理。 以下是一个简单的示例代码: ```vb Imports System.Net.NetworkInformation Module Module1 Sub Main() Dim ipAddresses As New List(Of String)() ' 获取所有的网络接口 Dim networkInterfaces As NetworkInterface() = NetworkInterface.GetAllNetworkInterfaces() For Each networkInterface As NetworkInterface In networkInterfaces ' 获取网络接口的IP属性 Dim ipProperties As IPInterfaceProperties = networkInterface.GetIPProperties() ' 获取接口的单播地址列表 Dim unicastAddresses As UnicastIPAddressInformationCollection = ipProperties.UnicastAddresses For Each unicastAddress As UnicastIPAddressInformation In unicastAddresses ' 筛选出IPv4地址、非回环地址和以太网地址 If unicastAddress.Address.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork AndAlso Not IPAddress.IsLoopback(unicastAddress.Address) AndAlso networkInterface.NetworkInterfaceType = NetworkInterfaceType.Ethernet Then ipAddresses.Add(unicastAddress.Address.ToString()) End If Next Next ' 打印IP地址 For Each ipAddress As String In ipAddresses Console.WriteLine(ipAddress) Next Console.ReadLine() End Sub End Module ``` 运行上述代码,就可以获取到局域网中的IP地址,并将其打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值