VB6获取本机所有IP地址公用函数
发布时间:2020-12-17 08:18:24 所属栏目:百科 来源:网络整理
导读:因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option ExplicitPrivate Declare Function WSAstartup Lib "WSOCK32.DLL" Alias "WSAStartup" (ByVal wVersionRequired As Integer,ByRef lpWSAData As WSAdata) As LongPrivate Declare Function
因为正好有用到,整了个公用函数,一次获取本机全部IP地址: Option Explicit Private Declare Function WSAstartup Lib "WSOCK32.DLL" Alias "WSAStartup" (ByVal wVersionRequired As Integer,ByRef lpWSAData As WSAdata) As Long Private Declare Function WsACleanup Lib "WSOCK32.DLL" Alias "WSACleanup" () As Long Private Declare Function WSAIoctl Lib "ws2_32.dll" (ByVal s As Long,ByVal dwIoControlCode As Long,lpvInBuffer As Any,ByVal cbInBuffer As Long,lpvOutBuffer As Any,ByVal cbOutBuffer As Long,lpcbBytesReturned As Long,lpOverlapped As Long,lpCompletionRoutine As Long) As Long Private Declare Function socket Lib "WSOCK32.DLL" (ByVal af As Long,ByVal s_type As Long,ByVal protocol As Long) As Long Private Declare Function closesocket Lib "WSOCK32.DLL" (ByVal s As Long) As Long Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any,Source As Any,ByVal Length As Long) Private Type sockaddr sin_family As Integer sin_port As Integer sin_addr As Long sin_zero As String * 8 End Type Private Type sockaddr_gen AddressIn As sockaddr filler(0 To 7) As Byte End Type Private Type INTERFACE_INFO iiFlags As Long iiAddress As sockaddr_gen iiBroadcastAddress As sockaddr_gen iiNetmask As sockaddr_gen End Type Private Type INTERFACEINFO iInfo(0 To 7) As INTERFACE_INFO End Type Private Type WSAdata wVersion As Integer wHighVersion As Integer szDescription As String * 255 szSystemStatus As String * 128 iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As Long End Type Private Const AF_INET = 2 Private Const SOCK_STREAM = 1 Private Const INVALID_SOCKET = -1 Private Const SIO_GET_INTERFACE_LIST As Long = &H4004747F Private Function GetStrIPFromLong(nIP As Long) As String On Error Resume Next Dim btBuffer(3) As Byte Call CopyMemory(ByVal VarPtr(btBuffer(0)),ByVal VarPtr(nIP),4) Let GetStrIPFromLong = btBuffer(0) & "." & btBuffer(1) & "." & btBuffer(2) & "." & btBuffer(3) End Function Public Function EnumLocalIpAddress() As String() On Error GoTo Z Dim lngSocketHandle As Long Dim lngBytesReturned As Long Dim tpBuffer As INTERFACEINFO Dim nNumInterfaces As Integer Dim i As Integer Dim StartupInfo As WSAdata Dim strIPBuffer() As String If WSAstartup(&H202,StartupInfo) <> 0 Then Exit Function End If lngSocketHandle = socket(AF_INET,SOCK_STREAM,0) If lngSocketHandle = INVALID_SOCKET Then Exit Function End If If WSAIoctl(lngSocketHandle,SIO_GET_INTERFACE_LIST,ByVal 0,tpBuffer,1024,lngBytesReturned,ByVal 0) Then closesocket lngSocketHandle Exit Function End If nNumInterfaces = CInt(lngBytesReturned / 76) ReDim strIPBuffer(nNumInterfaces - 1) For i = 0 To nNumInterfaces - 1 strIPBuffer(i) = GetStrIPFromLong(tpBuffer.iInfo(i).iiAddress.AddressIn.sin_addr) Next i EnumLocalIpAddress = strIPBuffer closesocket lngSocketHandle WsACleanup Exit Function Z: End Function
Dim i As Long,strIPAdd() As String strIPAdd = EnumLocalIpAddress If SafeArrayGetDim(strIPAdd) > 0 Then For i = 0 To UBound(strIPAdd) Debug.Print strIPAdd(i) Next End If (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- swift 判断/比较两张图片是否相同 - 感知哈希算法
- ruby-on-rails – 在Ruby on Rails中,“资源”是什么意思?
- MTD子系统-硬件驱动层主要函数分析 (start--------2)
- iphone – 如何从已编译的iOS应用程序中解压缩/ .nib文件
- Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖
- c# – 实体框架和DbSet
- 身份验证 – 来自另一个文件的React-Native反应导航
- C语言中时间戳转换成时间字符串的方法
- oracle 11g 审计文件 audit
- 3.Oracle杂记——数据字典dba_data_files