Como sacor el IP

25/07/2003 - 20:06 por Julio Gillo | Informe spam
tenemos 2 placas en un servidor, la cual una de las placas es para la lan y
la otra es dedicada a internet, la que yo quiero obtener por medio de un prg
es la direccion que me provee el prestador de internet(la cual es la
direccion de la segunda placa), pero no desde el servidor sino desde una pc
cualquiera que pertenece a la lan.

Preguntas similare

Leer las respuestas

#1 JCastro
25/07/2003 - 22:26 | Informe spam
De una manera con poco estilo
shell "tracert www.yahoo.com >c:\listado.txt"
open "c:\listado.txt" for input as #1
line input #1,a
line input #1,b
line input #1,c
close #1
depende los saltos (la distancia que esta el cliente hacia la ip externa),
puede que a,b o c tengan la ip que buscas.


"Julio Gillo" escribió en el mensaje
news:
tenemos 2 placas en un servidor, la cual una de las placas es para la lan


y
la otra es dedicada a internet, la que yo quiero obtener por medio de un


prg
es la direccion que me provee el prestador de internet(la cual es la
direccion de la segunda placa), pero no desde el servidor sino desde una


pc
cualquiera que pertenece a la lan.





Respuesta Responder a este mensaje
#2 Eduardo A. Morcillo [MS MVP]
26/07/2003 - 07:29 | Informe spam
La siguiente funcion te devuelve un arreglo con todas las IPs del servidor.
Una vez que tengas las IPs solo debes buscar aquella que sea publica (por lo
general la que sea de clase c).

Const MAX_WSADescription As Long = 256
Const MAX_WSASYSStatus As Long = 128
Const ERROR_SUCCESS As Long = 0

Private Type HOSTENT
hName As Long
hAliases As Long
hAddrType As Integer
hLen As Integer
hAddrList As Long
End Type

Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type

Private Declare Function WSAStartup Lib "wsock32" ( _
ByVal wVersionRequired As Long, _
lpWSADATA As WSADATA) As Long

Private Declare Function WSACleanup Lib "wsock32" () As Long

Private Declare Function gethostbyname Lib "wsock32" ( _
ByVal szHost As String) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal cbCopy As Long)

Function GetIPs(ByVal Host As String) As String()
Dim WSAD As WSADATA
Dim tHost As HOSTENT
Dim lHost As Long
Dim lIPAddr As Long
Dim abIP(0 To 3) As Byte
Dim lIdx As Long
Dim asIPs() As String

If WSAStartup(1, WSAD) <> ERROR_SUCCESS Then
Exit Function
End If

lHost = gethostbyname(Host)

If lHost Then

CopyMemory tHost, ByVal lHost, Len(tHost)
CopyMemory lIPAddr, ByVal tHost.hAddrList, 4&

Do While lIPAddr

CopyMemory abIP(0), ByVal lIPAddr, 4&

ReDim Preserve asIPs(0 To lIdx)
asIPs(lIdx) = abIP(0) & "." & abIP(1) & "." & _
abIP(2) & "." & abIP(3)
lIdx = lIdx + 1

tHost.hAddrList = tHost.hAddrList + 4
CopyMemory lIPAddr, ByVal tHost.hAddrList, 4&

GetIPs = asIPs()

Loop

End If

WSACleanup

End Function

Eduardo A. Morcillo [MS MVP - VB]
http://www.mvps.org/emorcillo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida