Obtener Wan IP en vb6

Iniciado por rapbyone, 2 Julio 2014, 23:04 PM

0 Miembros y 1 Visitante están viendo este tema.

rapbyone

Alguien tiene algún código para obtener la WAN IP del router a través de vb6. la IP local la saco con el componente Winsock, pero la WAN IP no se como

alguna ayuda.
gracias amigos :D

engel lex

entre las pocas formas (por no decir unica) de obtener el ip de wan es preguntandoselo a un servidor externo :P la otra es que tu programa se meta en el panel de administrador del router y saque los valores
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gh057

hola rapbyone, podrías hacerlo mediante consulta al servidor dns, que al cruzarlo con los registros de recursos AAAA, resuelve el nombre a su dirección ipv6; brindándote así el valor requerido. saludos
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

rapbyone

Cita de: engel lex en  3 Julio 2014, 03:55 AM
entre las pocas formas (por no decir unica) de obtener el ip de wan es preguntandoselo a un servidor externo :P la otra es que tu programa se meta en el panel de administrador del router y saque los valores

Encontré este código que hace la consulta a un servidor externo, pero no me muestra la IP

Private Sub Command5_Click()
Dim cTemp As String
Dim arTemp() As String

Call URLDownloadToFile(0, "http://www.myipaddress.com/show-my-ip-address/", App.Path & "\ipaddress.htm", 0, 0)
If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)
    Else
        MsgBox "Unknown IP Address"
    End If
    Kill App.Path & "\ipaddress.htm"
Else
    MsgBox "Unknown IP Address"
End If
End Sub


Cita de: Gh057 en  3 Julio 2014, 04:36 AM
hola rapbyone, podrías hacerlo mediante consulta al servidor dns, que al cruzarlo con los registros de recursos AAAA, resuelve el nombre a su dirección ipv6; brindándote así el valor requerido. saludos

No tengo los conocimiento para lograrlo, suena genial, pero difícilmente lo logre hacer  :-(

engel lex

Cita de: rapbyone en  3 Julio 2014, 04:49 AM
Encontré este código que hace la consulta a un servidor externo, pero no me muestra la IP....

probaste meterte a la pagina a la que consultas?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gh057

#5
jejeje habia entendido para el diablo, entendi ipv6... y era visual XD

(la idea que te comentaba era simplemente consultar por el dominio y obtener la ip publica en hexa.)

con respecto al codigo en si para visual hay muchos... hay hasta un grupo de google... recursos vb, en fin otro para showmy... solo hay que buscar. la rueda esta hecha. lo insertas en un formulario y listo. saludos
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

rapbyone

Cita de: engel lex en  3 Julio 2014, 05:00 AM
probaste meterte a la pagina a la que consultas?

Gracias por responder amigo, efectivamente el problema era la pagina, la cambie quedando así el codigo:

Dim cTemp As String
Dim arTemp() As String

Call URLDownloadToFile(0, "http://www.mediacollege.com/internet/utilities/show-ip.shtml", App.Path & "\ipaddress.htm", 0, 0)
If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)
    Else
        MsgBox "Unknown IP Address"
    End If
    Kill App.Path & "\ipaddress.htm"
Else
    MsgBox "Unknown IP Address"
End If


El problema es que el msgbox me muestra el texto "Your IP Address is" y es al lado donde sale la WAN IP
se que modificando los valores de

If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)


podría seleccionar que mostrar en el msgbox, pero no tengo claridad del como
me dan una mano amigos por favor

saludos

engel lex

revisa el código fuente de la pagina y ve que factores tienes que buscar para aislar el valor que quieres, más bien me parece demasiada casualidad que el valor que te devuelve sea casi el correcto XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

rapbyone

Cita de: engel lex en  3 Julio 2014, 13:58 PM
revisa el código fuente de la pagina y ve que factores tienes que buscar para aislar el valor que quieres, más bien me parece demasiada casualidad que el valor que te devuelve sea casi el correcto XD

ya casi, revisando el código de fuente de la pagina, me logre hacer que tome la IP, pero me falta sacar el texto inicial, así me sale:



este es el código de fuente:

<div id="content">

<h1>Your IP Address</h1>
<p>Your IP Address is: &nbsp; <b><font size="+1">

200.104.135.65


</font></b></p>
<p>If you have a static IP (Internet Protocol) address, this number will stay the same each time you visit. If you have a dynamic IP, the number will change each time you log on to the internet (or your ISP assigns a new IP).</p>
<!-- Footer -->
</div>


y así tengo el código en vb6

If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<b>") > 0 Then
        arTemp = Split(Replace(cTemp, "</font>", "<p>"), "<p>")
        MsgBox arTemp(1)


ya casi :D

engel lex

usa MID o RIGHT para sacar el resto

aqui una referencia de msdn a las funciones de manejos de cadena de VB
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.