Hola tom gracias por responder.
Con "socket de escucha" me refiero a que mi programa se quede a la espera de que alguien se conecte y le envié un mensaje. es decir que mi programa haga la función de servidor, que este a la espera de que un cliente se conecte a el.
problema: Tengo dirección ip privada, no es visible en internet, necesito una ip publica para poder ser visible en internet y poder crear este servidor en espera de una conexión...
especifico un poco mas, en el proyecto que estoy realizando intervienen 2 programas que se comunican a través de una API(Hecha en php, que es la que modifica la base de datos). llamaremos a uno de los programas interfaz (es donde el cliente hace los cambios, y modifica los datos) esta interfaz manda los datos a la api para actualizarlos. hay un segundo programa lo llamaremos "Ejecutor" el cual se encarga de realizar las acciones dependiendo de los datos que hay. el problema lo tengo en el "Ejecutor", ya que este es quien tiene la ip privada. lo que quiero hacer es crear un servidor en "ejecutor". de manera que el cliente hace cambios en "Interfaz", interfaz manda los datos a la API, y que la API avise a "ejecutor" que hubo un cambio y le mande los nuevos datos y "ejecutor" realice lo que debe hacer. para que esta API avise a "ejecutor" del cambio, debe haber un servidor en espera al que la API se pueda conectar.
Para crear este servidor necesito una ip publica, asi que no puedo hacerlo, porque tengo una ip privada. y tampoco quiero que "ejecutor" se este conectando cada pocos segundos a la API para verificar si hay cambios.
Leyendo por internet, consegui algo sobre establecer una VPN (Red privada virtual). y la solucion que pense es que "ejecutor" se conecte a la API y se cree un vpn entre estos dos, de manera que ya se puedan comunicar entre ellos sin necesidad de este servidor. es como crear un puente entre la api y "ejecutor" para enviar y recibir datos. de esta manera la api ya podría avisar que se ha producido un cambio.
No se nada de esto de VPN, lo que explico es lo que he entendido al leer por internet.
Mi pregunta es:
Es posible hacer esta comunicación entre la API y "ejecutor" a través de vpn? o es algo muy complicado?
Hay otra manera de hacerlo? a traves de websockets (
https://carlosazaustre.es/websockets-como-utilizar-socket-io-en-tu-aplicacion-web/), o un túnel SSH.
y cual de estas es compatible con J2ME.
Otra cosa a destacar, es que pueden haber varios programas "ejecutores" que intenten conectarse al servidor. que tendrán un numero identificativo. es posible crear una VPN con cada "ejecutor" que se conecte? no serán un numero exagerado. como mucho mucho exagerando 100.
---------
No se si explico mi duda, quiero que "ejecutor" pueda recibir mensajes de la API cuando se modifiquen los datos, sin que "ejecutor" tenga un servidor a la espera de una conexión, porque esa solución no puede ser debido a su ip privada.
Todo esto pensando en que "ejecutor" esta escrito en J2ME. es decir una solución compatible, a lo mejor lo de VPN si sirve pero con J2ME no es compatible. Quiero ver si alguien me puede orientar un poco en esto, si sabe. y muchas gracias.