Foro de elhacker.net

Programación => Java => Mensaje iniciado por: juancaa en 20 Agosto 2012, 04:48 am



Título: Ayuda con Sockets en java
Publicado por: juancaa en 20 Agosto 2012, 04:48 am
Pues veran, estoy desarrolando una apliacion que se maneja con scokets para comunicarse con servidores y clientes utilizando los metodos DataOutputStream y DataInputStream. Bien, el caso es que estoy teniendo algunos problemillas pues no estoy muy familiarizado con los sockets, me gustaria saber que pasa y como debo reaccionar cuando un cliente no responde al servidor, poniendo el siguiente codigo de ejemplo:

Código
  1.    public class checkConnections extends Thread {        
  2.        public void run () {    
  3.            try {
  4.                DefaultTableModel t = (DefaultTableModel) jTable1.getModel();
  5.                User u = null;  
  6.                System.out.println("Checking connections...");
  7.                for (int i=0; i<users.size(); i++) {
  8.                    u = getUserAtRow(i);
  9.                    DataOutputStream dos = new DataOutputStream(u.getConnection().getOutputStream());
  10.                    dos.writeUTF("answer");
  11.                    String answer = dis.readUTF();
  12.                    if (!answer.equals("hi")) {
  13.                        users.remove(u);
  14.                        t.removeRow(i);
  15.                    }
  16.                }
  17.            }catch (IOException ex) { System.out.println("no answer"); }
  18.        }        
  19.    }

Para informarles, no esta de mas decir que los servidores conectados se encuentran en una tabla que gestiona el cliente, asi que va revisando que todos los servidores respondan.

Tal y como he dicho antes, este codigo pide a todos los servidores conectados que respondan mediante la instruccion answer. En el caso en que dicho servidor no este conectado por diversos motivos (fallo en la conexion, etc...), la llamada al metodo : dos.readUTF(); me devuelve un nullpointerexception que no se como gestionar, alguna idea?


Título: Re: Ayuda con Sockets en java
Publicado por: xmbeat en 28 Agosto 2012, 03:35 am
La variable "dis" debe ser obtenida de manera análoga a la variable "dos", y después hacer el readUTF(), ademas si es null el resultado de esta llamada debes hacer antes una comparacion
String answer = dis.readUTF();
 if (answer == null || !answer.equals("hi")) { ...