elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  ¿Qué ocurre con el socket? se congela la aplicación
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Qué ocurre con el socket? se congela la aplicación  (Leído 2,436 veces)
miltonprogramador

Desconectado Desconectado

Mensajes: 25



Ver Perfil
¿Qué ocurre con el socket? se congela la aplicación
« en: 23 Diciembre 2016, 00:48 am »

Hola amigos... hoy traigo una falla con el manejo de socket... tengo un método para iniciar la conectividad del socket en una aplicación cliente servidor pero cuando llega a ss.accept(); la aplicación simplemente se cuelga... se nota colgada porque no responde a ninguno de los controles en la vista e incluso el botón que tengo creado para iniciar la conectividad se queda presionado... entonces si esta colgada...

el método que uso para la conectividad es el siguiente:

Código
  1. private boolean iniciarConectividad(){
  2.        ServerSocket ss;
  3.        //Iniciando servidor...
  4.        try {
  5.            ss = new ServerSocket(10579);
  6.            System.out.println("Iniciando servidor");
  7.            //Servidor iniciado exitosamente...
  8.            //Esto lo mantiene en eterna escucha...
  9.            while (true) {
  10.                Socket socket = null;
  11.                try {
  12.                    socket = ss.accept(); //--> JUSTO AQUI    "S E  C U E L G A"
  13.                    System.out.println("Nueva conexión entrante: " + socket);
  14.                    ((Hilos) new Hilos(socket, Sesion.idSesionServidor)).start();
  15.                    Sesion.idSesionServidor++;
  16.                    System.out.println("Esperando una nueva solicitud de conexión...");
  17.                    return true;
  18.                } catch (IOException e) {
  19.                    e.printStackTrace();
  20.                    return false;
  21.                }
  22.            }
  23.        } catch (IOException ex) { Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
  24.            //Se produjo un error al intentar iniciar el servidor...
  25.            System.out.println("Se produjo un error al intentar iniciar el servidor...");
  26.            return false;
  27.        }
  28.    }
  29.  

Agradezco su ayuda... tengo todo el día tratando de darle la vuelta pero no encuentro el detalle...


En línea

Aprendiendo de los mejores se llega a ser uno de ellos...
Dougki

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: ¿Qué ocurre con el socket? se congela la aplicación
« Respuesta #1 en: 23 Diciembre 2016, 12:16 pm »

hola, se queda colgada porque el metodo accept detiene el hilo hasta que llega una peticion y entonces la acepta, la solucion para que no se cuelgue la aplicacion seria crear una nueva clase que implemente Runnable , que cree un nuevo hilo y que en esta se cree serversocket y se quede a la escuha de la peticion.  

Código:

public class escucha implements Runnable{

public escucha(){

Thread hilo=new Thread(this);
hilo.start();

}

public void run() {

try {

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

ss.close();
s.close();


} catch (IOException e1) {
e1.printStackTrace();
}

}

}



« Última modificación: 23 Diciembre 2016, 12:30 pm por Dougki » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: ¿Qué ocurre con el socket? se congela la aplicación
« Respuesta #2 en: 23 Diciembre 2016, 13:12 pm »

O ponle un timeout: https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#setSoTimeout(int)
En línea

miltonprogramador

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: ¿Qué ocurre con el socket? se congela la aplicación
« Respuesta #3 en: 30 Diciembre 2016, 05:05 am »

Gracias por responder, es verdad es my obvio... lo resolví el mismo día que me hiciste la sugerencia... opté por un Thread.... Muchas gracias...
En línea

Aprendiendo de los mejores se llega a ser uno de ellos...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
QProcess congela la aplicación [c++][Qt4][SOLUCIONADO]
Programación C/C++
paju1986 2 3,407 Último mensaje 6 Enero 2011, 18:03 pm
por paju1986
Aplicacion utilizando Socket
.NET (C#, VB.NET, ASP)
llAudioslavell 1 1,771 Último mensaje 24 Enero 2012, 18:13 pm
por llAudioslavell
Aplicacion utilizando Socket Asincrono
.NET (C#, VB.NET, ASP)
llAudioslavell 2 3,962 Último mensaje 27 Agosto 2013, 09:22 am
por Keyen Night
Multithread Socket (Thread per Socket)not Complete « 1 2 »
Programación Visual Basic
ntaryl 12 8,773 Último mensaje 10 Febrero 2012, 18:42 pm
por ntaryl
¿Qué ocurre al crear un socket?
Programación C/C++
mester 3 1,637 Último mensaje 23 Noviembre 2015, 22:19 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines