取得本机IP地址的方法两则

博客介绍了两种获取当前计算机网卡IP的方法。一是控件法,新建工程加入Winsock和按钮控件,通过代码获取;二是API法,新建工程加入按钮控件,利用一系列API函数编写代码来获取IP地址,并给出了详细代码示例。

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

方法1:(控件法)

新建工程,在工程中加入Winsock控件和一个按钮控件

代码:

Option Explicit

Private Sub Command1_Click()
   MsgBox "当前计算机网卡IP:" & Winsock1.LocalIP
End Sub

方法2:(API法)

新建工程,在工程中加入一个按钮控件

代码:

Option Explicit

Private Type WSAData
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To 256)
    szSystemStatus(0 To 128)
    wMaxSockets As Integer
    dwVendorInfo As Long
End Type

Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSAData As WSAData) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
Private Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Private Function GetIPAddress() As String
    On Error GoTo Z
    Dim wsa As WSAData
    Dim rVal As Long
    Dim sHost As String * 256
    Dim lp As Long
    Dim lpa As Long
    Dim IpAdr(0 To 3) As Byte
    rVal = WSAStartup((2 + &H100), wsa)
    If rVal = 0 Then
        gethostname sHost, 256
        lp = gethostbyname(sHost)
        If lp Then
            CopyMemoryIP lpa, lp + 16, 4
            CopyMemoryIP IpAdr(0), lpa, 4
            GetIPAddress = CStr(IpAdr(0)) & "." & CStr(IpAdr(1)) & "." & CStr(IpAdr(2)) & "." & CStr(IpAdr(3))
        End If
        WSACleanup
    End If
    Exit Function
Z:
    GetIPAddress = ""
End Function

Private Sub Command1_Click()
   Dim ret As String
   ret = GetIPAddress
   If ret <> "" Then
      MsgBox "当前计算机网卡IP:" & ret
   End If
End Sub


'-------------------------------------------
' 转载请注明出处
' 作者:唐细刚
' 邮箱:tanaya@163.com
'-------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值