obtener ip pública


([N4] apinna.winmotor) #1

Hola comunidad,

estamos desarrollando una aplicación para tablets y tenemos un problemilla :

¿ alquien sabe cómo obtener desde V7 la IP pública de una máquina ? ¿alguna sentencia Javascript ?

Muchas gracias a todos


([N1] Mario) #2

Te lo pongo facil:

getUrl + http://bot.whatismyipaddress.com/

El resto es cosa tuya :wink:

Saludos


([N4] velavisual) #3

@apinna

Su usas getClientIP() en tercer plano en el Servidor obtienes lo que necesitas

De igual forma puedes usar el getServerIP() en tercer plano.


([N4] apinna.winmotor) #4

@antonio : muchas gracias pero se trata de obtener la ip pública de la máquina local.

@mario : muchas gracias, con GetficherodeUrl y esa dirección si lo he conseguido, eres un monstruo


([N1] Mario) #5

[quote quote=29752]@antonio : muchas gracias pero se trata de obtener la ip pública de la máquina local.

@mario : muchas gracias, con GetficherodeUrl y esa dirección si lo he conseguido, eres un monstruo

[/quote]

Tampoco soy tan feo…


([N4] velavisual) #6

@apinna

Disculpa por no haber entendido bien tu pregunta, soy más feo, seguro… gege

Llevo mucho tiempo usándolo y sin problemas.




([N4] innovadb) #7

@Antonio, pues va a se que no eres tan feo.

Independientemente de lo que diga la documentación, tu solución funciona perfectamente en conexiones a través de internet.

Si lo ejecutamos con vServer y vClient en red local devuelve la ip privada, pero si es online devuelve la ip pública.

El único problema es si estamos en red local y necesitamos la ip pública, pero creo que no es este el caso, ya que supongo que las tablets se conectan a través de internet.

Un saludo


([N4] apinna.winmotor) #8

@todos

como veo que está trayendo cola os aclaro :

en este caso se trata de tabletas AUTÓNOMAS en Windows8 con un Vserver local. Las tabletas tienen que conectarse al servidor y enviarle su IP pública para que el servidor pueda enviarle datos vía función remota a la tableta.

Muchas gracias a todos y un saludo


([N4] innovadb) #9

@apinna Gracias por la aclaración.

Como decía en el post anterior:

Y en tu caso vServer y vClient están en red local dentro de la tablet, por lo que la solución de Antonio no te sirve.

@Mario. Me apunto tu solución para cuando la necesite.

Un saludo


([N1] Mario) #10

Buenas.

Ojo que eso es un servicio de terceros y no sabemos cuando va a dejar de funcionar, cambiar la url o que el retorno sea diferente…

Saludos


([N4] velavisual) #11

@apinna

Yo en tu caso lo que haría es leer la información del vSever Central desde Las tabletas. Yo personalmente lo hago así, sólo tendrías que tener configurada en la tableta la IP del vServer central y realizar las lecturas correspondiente vía funciones remotas, tcp, url web, etc.

Todo esto es (cono dice Mario) por si el proveedor te cambia la forma de informarte de la IP que necesitas.


([N4] apinna.winmotor) #12

@Antonio,

gracias por tu aclaración pero en este caso necesito para actualización de información masiva que sea el servidor el que actualice la tableta. Por si algún día falla esa url vamos a montar en nuestra página una opción que haga lo mismo.

Saludos


([N4] velavisual) #13

@apinna

Disculpa si soy algo pesado, pero me gusta compartir con los demás experiencias similares.

En mi caso, las tabletas solicitan información al vServer (que muy rara vez cambia de dirección ya que es ip fija, y ésta es la ip que debe saber la tableta para actualizar información)

Cada x tiempo (programable y dependiendo de los movimientos) la tableta mediante función remota llama al vServer, éste le envía la información solicitada parseada y una vez recibida (no tarda más de 5 segundos) la descompone y realiza las operaciones correpospondientes en el vServer local de las tabletas.

Suelo hacer varias peticiones de forma transparente al usuario de la tableta y, hasta ahora no ha habido ningún problema.

Dependiendo del operador, los paquetes a enviar/recibir podrán ser más grandes o más pequeños, de ahí que lo haga en varias veces para que no sea interrumpido. Si es interrumpido dispongo de carácter de cadena final para dicha comprobación y necesidad de reintento o no.

Generalmente manejan cadenas de texto a parsear de unos 300Kb, com muchíiiiiiiisima información…


([N1] wikan) #14

Yo le doy un más a @velavisual.

Aunque también esta la pega que si no hay nada que sincronizar el servidor estará recibiendo preguntas.

Entonces, podrías hacer un híbrido. Las tabletas se conectan y traen la info.
Pero es el servidor quién les dice…ehhh tengo algo para ti.

Al iniciar el programa en las tablets, le mandas la ip al servidor para que este pueda enviarte la noticia que hay algo para sincronizar. Y desde que la ip no responda el servidor te borra de la lista.


([N4] apinna.winmotor) #15

Bueno, yo creo que esto se ha salido un poco de la cuestión por aquello de que cada maestrillo tiene su librillo pero como sigue el debate os cuento la historia completa:

  • Premisas
  • Tableta autónoma con Windows 8 y conexión móvil 3g. V7 server monopuesto licencia libre
  • Servidor en instalaciones centrales con IP fija
  • Funcionamiento
  • Tableta -> Servidor : envía altas de registros (pedidos, visitas, etc)

  • Servidor -> Tableta : Debe actualizar los cambios en los pedidos del vendedor, cualquier cliente del vendedor, cualquier artículo

Mi máxima preocupación en este procedimiento es reducir al máximo las tareas innecesarias y liberar en todo lo posible al usuario de la tableta de timmers que no hagan nada.

La tableta sabe cuando tiene que enviar información, cada vez que se crea un alta de un registro.

La tableta NO SABE cuando tiene que recibir información. No me ha parecido limpio por lo tanto que la tableta haga continuamente preguntas al servidor preguntándole si hay datos nuevos. Además el servidor tendría primero que decirle qué datos tiene (puede tener en un momento dado modificación en 100 fichas de artículos) y luego la tabla pedirlos uno a uno.

Me parece completamente lógico por lo tanto preocuparme mucho de que el servidor sepa cuando la tableta está conectada o no y cuál es su IP (además de la url que nos pasó Mario he localizado muchas que hacen lo mismo) y cuando tenga un registro que enviar lo envía. Esto libera a la tableta de tareas redundantes y al servidor también.

Bueno, espero que se entienda y os aclare algo.


([N4] velavisual) #16

Todos los comentarios en torno a este tema siempre son enriquecedores, yo personalmente, cuando se envía información desde los terminales al vServer central es cuando al mismo tiempo recibo posible información para su actualización en el vServer de los terminales.

Esto no significa que esté constantemente preguntando al vServer central si hay o no información para actualizar. También está la posibilidad de múltiples servidores monopuestos desde los cuales sincronizar información previamente sincronizada con el vServer central, pero esto ya son otras alternativas y otras hubicaciones para su actualización.

Claro está, que también está la opción para el usuario del terminal de hacer un -refresh- de la información de su terminal.

Gracias a todos por vuestra colaboración. Esto son los tipos de debates que deben existir en este foro aunque cada tengamos distintos puntos de vista.


([N4] Ramon Denuc) #17

Como puedo utilizar getClientIP() en tercer plano.

¿A través de un proceso?, ¿o a través de un manejador de objetos?

Lo pregunto porque lo he probado de las dos formas y siempre recibo la misma contestación 127.0.0.1

Agradecería una pequeña ayuda/orientación.

Saludos


([N4] apinna.winmotor) #18

@RamonD

Hola,

este proceso nunca lo puedes utilizar en tercer plano puesto que siempre te devolverá la IP local del servidor. Sólo puede ser utilizado por lo tanto en primer plano .

En este post tratábamos la problemática de resolver la IP de una máquina que está funcionando en modo Of-line de manera autónoma y enviaba y recibía datos del servidor vía funciones remotas (tabletas). Si es este tu caso la cuestión se resuelve llamando a URLs que devuelven la ip pública y leyendo esta ip mediante el comando “GetFicheroURL”. Estas son algunas que te pueden servir pra esto :

http://bot.whatismyipaddress.com/

http://icanhazip.com/

http://checkip.dyndns.org/ (ojo , esta devuelve por delante un mensaje “Current IP Address:”)

Saludos