你说的是在VB中吗?如果是,请看代码:1、启动一个新工程,添加一个窗体Form1 2、添加一个CommandButton和一个Command1 3、把下面代码放在Form1的声明中
Private Const WS_VERSION_REQD = &H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD = 1
Private Const SOCKET_ERROR = -1
Private Const WSADescription_Len = 256
Private Const WSASYS_Status_Len = 128 Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As LongEnd Type Private Type WSADATA
wversion As Integer
wHighVersion As Integer
szDescription(0 To WSADescription_Len) As Byte
szSystemStatus(0 To WSASYS_Status_Len) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpszVendorInfo As LongEnd Type Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal
wVersionRequired&, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal hostname$,
HostLen&) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal
hostname$) As Long Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal
hpvSource&, ByVal cbCopy&) Function hibyte(ByVal wParam As Integer) hibyte = wParam \ &H100 And &HFF& End Function Function lobyte(ByVal wParam As Integer) lobyte = wParam And &HFF& End Function Sub SocketsInitialize()
Dim WSAD As WSADATA
Dim iReturn As Integer
Dim sLowByte As String, sHighByte As String, sMsg As String iReturn = WSAStartup(WS_VERSION_REQD, WSAD) If iReturn <> 0 Then
MsgBox "Winsock.dll is not responding."
End
End If If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or
(lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) <
WS_VERSION_MINOR) Then
sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))
sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))
sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte
sMsg = sMsg & " is not supported by winsock.dll "
MsgBox sMsg
End
End If If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
sMsg = "This application requires a minimum of "
sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported
sockets."
MsgBox sMsg
End
End If End Sub Sub SocketsCleanup()
Dim lReturn As Long lReturn = WSACleanup() If lReturn <> 0 Then
MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in
Cleanup "
End
End If End Sub Sub Form_Load() SocketsInitialize End Sub Private Sub Form_Unload(Cancel As Integer) SocketsCleanup End Sub Private Sub Command1_click()
Dim hostname As String * 256
Dim hostent_addr As Long
Dim host As HOSTENT
Dim hostip_addr As Long
Dim temp_ip_address() As Byte
Dim i As Integer
Dim ip_address As String If gethostname(hostname, 256) = SOCKET_ERROR Then
MsgBox "Windows Sockets error " & Str(WSAGetLastError())
Exit Sub
Else
hostname = Trim$(hostname)
End If hostent_addr = gethostbyname(hostname) If hostent_addr = 0 Then
MsgBox "Winsock.dll is not responding."
Exit Sub
End If RtlMoveMemory host, hostent_addr, LenB(host)
RtlMoveMemory hostip_addr, host.hAddrList, 4 ReDim temp_ip_address(1 To host.hLength)
RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength For i = 1 To host.hLength
ip_address = ip_address & temp_ip_address(i) & "."
Next
ip_address = Mid$(ip_address, 1, Len(ip_address) - 1) MsgBox hostname
MsgBox ip_address End Sub4、按F5键运行你的工程. 5、单击Command1就获得了本机的IP等信息其实这是MSDN中的例程,我也是借花献佛。:)
Private Const WS_VERSION_REQD = &H101
Private Const WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF&
Private Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
Private Const MIN_SOCKETS_REQD = 1
Private Const SOCKET_ERROR = -1
Private Const WSADescription_Len = 256
Private Const WSASYS_Status_Len = 128 Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As LongEnd Type Private Type WSADATA
wversion As Integer
wHighVersion As Integer
szDescription(0 To WSADescription_Len) As Byte
szSystemStatus(0 To WSASYS_Status_Len) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpszVendorInfo As LongEnd Type Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal
wVersionRequired&, lpWSAData As WSADATA) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal hostname$,
HostLen&) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal
hostname$) As Long Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal
hpvSource&, ByVal cbCopy&) Function hibyte(ByVal wParam As Integer) hibyte = wParam \ &H100 And &HFF& End Function Function lobyte(ByVal wParam As Integer) lobyte = wParam And &HFF& End Function Sub SocketsInitialize()
Dim WSAD As WSADATA
Dim iReturn As Integer
Dim sLowByte As String, sHighByte As String, sMsg As String iReturn = WSAStartup(WS_VERSION_REQD, WSAD) If iReturn <> 0 Then
MsgBox "Winsock.dll is not responding."
End
End If If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or
(lobyte(WSAD.wversion) = WS_VERSION_MAJOR And hibyte(WSAD.wversion) <
WS_VERSION_MINOR) Then
sHighByte = Trim$(Str$(hibyte(WSAD.wversion)))
sLowByte = Trim$(Str$(lobyte(WSAD.wversion)))
sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte
sMsg = sMsg & " is not supported by winsock.dll "
MsgBox sMsg
End
End If If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then
sMsg = "This application requires a minimum of "
sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported
sockets."
MsgBox sMsg
End
End If End Sub Sub SocketsCleanup()
Dim lReturn As Long lReturn = WSACleanup() If lReturn <> 0 Then
MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in
Cleanup "
End
End If End Sub Sub Form_Load() SocketsInitialize End Sub Private Sub Form_Unload(Cancel As Integer) SocketsCleanup End Sub Private Sub Command1_click()
Dim hostname As String * 256
Dim hostent_addr As Long
Dim host As HOSTENT
Dim hostip_addr As Long
Dim temp_ip_address() As Byte
Dim i As Integer
Dim ip_address As String If gethostname(hostname, 256) = SOCKET_ERROR Then
MsgBox "Windows Sockets error " & Str(WSAGetLastError())
Exit Sub
Else
hostname = Trim$(hostname)
End If hostent_addr = gethostbyname(hostname) If hostent_addr = 0 Then
MsgBox "Winsock.dll is not responding."
Exit Sub
End If RtlMoveMemory host, hostent_addr, LenB(host)
RtlMoveMemory hostip_addr, host.hAddrList, 4 ReDim temp_ip_address(1 To host.hLength)
RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength For i = 1 To host.hLength
ip_address = ip_address & temp_ip_address(i) & "."
Next
ip_address = Mid$(ip_address, 1, Len(ip_address) - 1) MsgBox hostname
MsgBox ip_address End Sub4、按F5键运行你的工程. 5、单击Command1就获得了本机的IP等信息其实这是MSDN中的例程,我也是借花献佛。:)
解决方案 »
- ADO : 过程声明与同名事件或过程的描述不匹配
- 如何设置提示数据已保存,无需再次保存!
- do while 時, cpu的佔用率是100%, 怎麼提高性能. (不是死循環)
- 高分求IBM面试题,最好是有VB方面的,在这里先谢谢了!(最好请附上答案)
- 有偿帮忙!!!如何通过VB访问Access数据库!!!
- 急!急!如何解决 ado 取excel字段时长度的问题
- 如何将VB和SQL连接??急,在线等!
- 急!
- 100分求助VB检测移动设备包括(U盘移动硬盘)
- 谁知道如何在程序中使用TWAIN接口获取扫描仪或数码相机的图片?????谢谢!!
- 显显显显显显显,一显 20 分!
- 帮忙看一下这段代码错在哪?
Linux 用ifconfig命令