Red de conocimiento informático - Material del sitio web - ¿Cómo mostrar la dirección IP de esta máquina en VB?

¿Cómo mostrar la dirección IP de esta máquina en VB?

Se recomienda utilizar la función API, el siguiente ejemplo completo:

(Puedes llamar directamente a la función GetIPAddress para obtener la IP)

-- ------- ---------

Opción explícita

Const pública MIN_SOCKETS_REQD siempre que = 1

Const pública WS_VERSION_REQD como Largo = amp; H101

Const pública WS_VERSION_MAJOR Mientras = WS_VERSION_REQD \ H100 y HFF Mientras = -1

Const pública ERROR_SUCCESS Mientras = 0

Público Const WSADESCRIPTION_LEN = 257

Const pública WSASYS_STATUS_LEN = 129

Const pública MAX_WSADescription = 256

Const pública MAX_WSASYSStatus = 128

Tipo público WSAData

wVersion como entero

wHighVersion como entero

szDescription(0 a MAX_WSADescription) como byte

szSystemStatus(0 a MAX_WSASYSStatus) como byte

wMaxSockets como entero

wMaxUDPDG como entero

dwVendorInfo como largo

Tipo final

Escriba WSADataInfo

wVersion como entero

wHighVersion como entero

szDescription como cadena * WSADESCRIPTION_LEN

szSystemStatus como cadena * WSASYS_STATUS_LEN

iMaxSockets Como entero

iMaxUdpDg como entero

lpVendorInfo como cadena

Tipo final

Tipo público HOSTENT

hName Como Long

hAliases As Long

hAddrType As Integer

hL

en Como entero

hAddrList As Long

Tipo de fin

Declarar función WSAStartupInfo Lib "WSOCK32" Alias ​​​​"WSAStartup" (ByVal wVersionRequested como entero, lpWSADATA como WSADataInfo) Mientras

Declarar Función WSACleanup Lib "WSOCK32" () Mientras

Declarar Función WSAGetLastError Lib "WSOCK32" () Mientras

Declarar Función WSAStartup Lib "WSOCK32" (ByVal wVersionRequired mientras, lpWSADATA como WSAData) mientras

Declarar función gethostname Lib "WSOCK32" (ByVal szHost como cadena, ByVal dwHostLen mientras) mientras

Declarar función gethostbyname Lib "WSOCK32" (ByVal szHost como cadena) mientras sea largo

Declarar sub CopyMemoryIP Lib "kernel32" Alias ​​​​"RtlMoveMemory" (hpvDest como cualquiera, ByVal hpvSource mientras sea largo, ByVal cbCopy como largo)

'Obtener dirección IP local

Función pública GetIPAddress() como cadena

Dim sHostName As String * 256

Dim lpHost As Long

Atenuar HOST como HOSTENT

Atenuar dwIPAddr mientras

Atenuar tmpIPAddr() como byte

Atenuar I como entero

Atenuar sIPAddr como cadena

Si no es SocketsInitialize() Entonces

GetIPAddress = ""

Salir de la función

Finalizar si

Si gethostname(sHostName, 256) = SOCKET_ERROR Entonces

GetIPAddress = ""

MsgBox "Error de Windows Sockets " & Str$(WSAGetLastError()) & " ha ocurrido. No se puede obtener correctamente el nombre del host."

SocketsCleanup

Salir de la función

Finalizar si

sHostName = Trim$(sHostName)

lpHost = gethostbyname(sHostName)

Si lpHost = 0 Entonces

GetIPAddress = ""

MsgBox "Los sockets de Windows no responden." amp "No se puede obtener correctamente el nombre del host."

SocketsCleanup

Función de salida

Finalizar si

CopyMemoryIP HOST, lpHost, Len(HOST)

CopyMemoryIP dwIPAddr, HOST. hAddrList, 4

ReDim tmpIPAddr(1 To HOST.hLen)

CopyMemoryIP tmpIPAddr(1), dwIPAddr, HOST.hLen

Para I = 1 a HOST .hLen

sIPAddr = sIPAddr amp; tmpIPAddr(I) amp "."

Siguiente

GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) ) - 1)

SocketsCleanup

Función final

Función pública GetIPHostName() como cadena

Dim sHostName como cadena * 256

Si no es SocketsInitialize() Entonces

GetIPHostName = ""

Salir de la función

Finalizar si

Si gethostname( sHostName, 256) = SOCKET_ERROR Entonces

GetIPHostName = ""

MsgBox "Error de Windows Sockets " & Str$(WSAGetLastError()) & " ha ocurrido. No se puede obtener correctamente el nombre del host ."

SocketsCleanup

Salir de la función

Finalizar si

GetIPHostName = Left$(sHostName, InStr(sHostName, Chr( 0) ) - 1)

SocketsClean

up

Función final

Función pública HiByte(ByVal wParam As Integer)

HiByte = wParam \ amp H100 Y amp; p>Función final

Función pública LoByte(ByVal wParam As Integer)

LoByte = wParam Y amp; >Public Sub SocketsCleanup()

Si WSACleanup() lt;gt; ERROR_SUCCESS Entonces

MsgBox "Se produjo un error de socket en la limpieza".

Finalizar si

End Sub

Función pública SocketsInitialize() como booleano

Atenuar WSAD como WSAData

Atenuar sLoByte como cadena

Dim sHiByte As String

If WSAStartup(WS_VERSION_REQD, WSAD) lt;gt; ERROR_SUCCESS Then

MsgBox "El socket de Windows de 32 bits no responde."

SocketsInitialize = False

Salir de la función

Finalizar si

Si WSAD.wMaxSockets lt; MIN_SOCKETS_REQD Entonces

MsgBox "Esta aplicación requiere un mínimo de " & CStr(MIN_SOCKETS_REQD) & " sockets admitidos."

SocketsInitialize = False

Función de salida

Finalizar si

If LoByte(WSAD.wVersion) lt; WS_VERSION_MAJOR O (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR Y HiByte(WSAD.wVersion) lt; WS_VERSION_MINOR) Entonces

sHiByte = CStr(HiByte(WSAD.wVersion) )

sLoByte = CStr(LoByte(WSAD.wVersion))

MsgBox "Versión de sockets " amp;

e amp; "no es compatible con Windows Sockets de 32 bits."

SocketsInitialize = False

Función de salida

Finalizar si

SocketsInitialize = True

Función final