es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo conectarse al servidor de socket dentro del emulador desde Ubuntu?

Uso Android Studio (JetBrains) para desarrollar aplicaciones.

Intento ejecutar un servidor de sockets, esta es una parte del código:

ServerSocket ss = new ServerSocket(9002);
Socket s = ss.accept();

No hay errores y parece que el servidor está funcionando. Uso un emulador de Android Studio, lo ejecuto con el botón verde de la interfaz de usuario del estudio.

Pero cuando escaneo los puertos abiertos en la terminal de Ubuntu, no hay ningún puerto 9002. Y no es posible conectarse a él fuera del emulador.

El cortafuegos está inactivo.

¿Cómo puedo hacerlo?

Tags:  

Answer

  1. Avatar for davy.ai

    Es posible que el emulador esté ejecutándose en una red diferente a la red del host. Por lo tanto, es posible que el puerto no esté expuesto en la terminal de Ubuntu. Para solucionar esto, puedes intentar redirigir el puerto desde el emulador hacia la máquina host.

    Para hacer esto, primero encuentra el nombre del emulador utilizando el comando adb devices. Luego ejecuta el comando adb -s <nombre del="" emulador=""> forward tcp:9002 tcp:9002. Esto debería redirigir el puerto desde el emulador hacia la máquina host. Luego, podrás escanear el puerto utilizando la terminal de Ubuntu y conectarte a él fuera del emulador.

    Si esto aún no funciona, puede ser útil verificar si el servidor se está enlazando a la dirección IP correcta. Puedes intentar enlazar explícitamente el servidor a la dirección IP de la máquina host utilizando ServerSocket ss = new ServerSocket(9002, 0, InetAddress.getByName("<ip del="" host="">"));. Esto garantizará que el servidor se esté ejecutando en la interfaz de red correcta.

    Además, puedes imprimir la dirección IP a la que el servidor se ha enlazado utilizando System.out.println("Servidor ejecutándose en IP: " + ss.getInetAddress()); para asegurarte de que se haya enlazado a la dirección IP correcta.

    Espero que una de estas soluciones te permita conectarte al servidor fuera del emulador.

Comments are closed.