Problema al conectar la aplicación de Android al socket mediante la conexión de celda

Estoy tratando de obtener mi aplicación Android para conectarse a un socket en un servidor a través de Internet. Me doy cuenta de que cuando tengo mi Wi-fi activado en el teléfono, la aplicación puede conectar con éxito al puerto, pero si apago el wi-fi, me sale un tiempo en la conexión. Puedo acceder y navegar por Internet en el teléfono sin problemas cuando wi-fi está apagado, pero la conexión a ese servidor siempre falla.

He verificado que el servidor está escuchando en ese puerto y siempre puedo conectar desde cualquier otro equipo a través de Internet y en el teléfono si wi-fi está habilitado.

Me pregunto qué podría ser diferente entre usar la conexión inalámbrica y la conexión de la célula para alcanzar esa localización. El IP que utilizo para conectarme a la dirección es una dirección pública.

Button SendButton = (Button) findViewById(R.id.SendButton); SendButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { Socket kkSocket = null; PrintWriter out = null; try { kkSocket = new Socket("XXXX", 4444); out = new PrintWriter(kkSocket.getOutputStream(), true); } catch (UnknownHostException e) { System.err.println("Don't know about host: XXXX"); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: XXXX"); } 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.