
Sockets y nuevas clases
Publicado por Josep (3 intervenciones) el 08/04/2014 19:53:55
He escrito un codigo para conectar un cliente y un servidor. Uso una primera pantalla creada con JFrame que me permite elegir diferentes opciones. Si pulsas el botón de "crear servidor" se crea una instancia de la clase ServerClass.
--Codigo MainClass-- (solo pongo lo relevante para ahorrar codigo y espacio, los include estan debidamente escritos)
--Codigo ServerClass--
El problema es que cuando corro el programa desde MainClass, se crea el JFrame de ServerClass al pulsar el botón, pero se queda colgada en la parte de serverSocket.accept(); y en este momento deja de funcionar el JFrame en si (si pulso la 'X' no se cierra, si lo redimensiono se queda negro....).
Por otro lado, si ejecuto el programa desde ServerClass funciona bien.
Seguramente es un fallo tonto que no logro encontrar, por esto lo posteo aquí.
En algun momento el programa MainClass me lanzó una excepción tipo "NoClassDefFound".
¿Puede ser este el problema?
Agradezco la ayuda de antemano
--Codigo MainClass-- (solo pongo lo relevante para ahorrar codigo y espacio, los include estan debidamente escritos)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MainClass{
public static void main(String arg[]){
new MainClass();
}
public MainClass(){
JFrame frame = new JFrame();
JButton button = new JButton("Create the frame");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ServerClass c = new ServerClass();
c.run();
}
});
frame.getContentPane().add(button);
frame.pack();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
--Codigo ServerClass--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class ServerClass{
public static void main(String arg[]){
ServerClass c = new ServerClass();
c.run();
}
public ServerClass(){
createGUI();
}
private void createGUI(){
JFrame frame = new JFrame("test frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(30, 30);
frame.setVisible(true);
}
public void run(){
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(60000);
System.out.println("socket created");
Socket s = serverSocket.accept(); <---Esta línea es la problematica
s.close();
} catch (IOException ex) {
Logger.getLogger(ServerClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
El problema es que cuando corro el programa desde MainClass, se crea el JFrame de ServerClass al pulsar el botón, pero se queda colgada en la parte de serverSocket.accept(); y en este momento deja de funcionar el JFrame en si (si pulso la 'X' no se cierra, si lo redimensiono se queda negro....).
Por otro lado, si ejecuto el programa desde ServerClass funciona bien.
Seguramente es un fallo tonto que no logro encontrar, por esto lo posteo aquí.
En algun momento el programa MainClass me lanzó una excepción tipo "NoClassDefFound".
¿Puede ser este el problema?
Agradezco la ayuda de antemano
Valora esta pregunta


0