Java - Problema con envío de objetos por socket.

 
Vista:
sin imagen de perfil

Problema con envío de objetos por socket.

Publicado por pablo (2 intervenciones) el 11/01/2017 02:45:39
Saludos amigos este es mi primer tema aquí en el foro. Tengo un problema al enviar un objeto de una clase por socket.
El problema es el siguiente:

tengo la clase hiloservidor la cual se encarga de ejecutar hilos cada vez que llegue una petición.
package servidor;

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.io.BufferedReader;
import java.io.EOFException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.SocketException;
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
 
 
public class hiloservidor extends Thread{
 
	private Socket ss;
	private int counter;
 
	public hiloservidor(Socket i,int c){
 
		this.ss=i;
		this.counter=c;
	}
 
        @Override
	public void run(){
 
		try{
                        boolean done=false;
			System.out.println("hola cliente "+counter);
 
                        while(!done){
 
                            ObjectInputStream entrada = new ObjectInputStream(ss.getInputStream());
                            ClaseServidor cla = (ClaseServidor) entrada.readObject();--> aquí está el problema se queda en un cliclo infinito en esta linea.
 
                            System.out.println("Datos del servidor de descarga recibido");
 
                        }
 
		}
		catch(Exception e){
 
		}
	}
 
}


y tengo la clase cliente:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package ser.des;
 
import java.io.File;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Scanner;
 
 
public class SerDes implements Serializable{
 
	public static void main(String args[]){
		try {
 
			boolean salir=false;
 
			int i = 1;
			Socket cliente = new Socket("127.0.0.1",4890);
			ArrayList<String>coleccion = new ArrayList<String>();
			coleccion.add("Libro1");
			coleccion.add("Libro2");
			coleccion.add("Libro3");
			coleccion.add("Libro4");
			coleccion.add("Libro5");
			coleccion.add("Libro6");
 
			ClaseServidor miServidor = new ClaseServidor(InetAddress.getLocalHost().getHostAddress(),15253,coleccion);
 
 
 
			System.out.println(miServidor.getColeccion());*/
 
			while(salir==false){
					ObjectOutputStream msgToServer = new ObjectOutputStream(cliente.getOutputStream());
					msgToServer.writeObject(miServidor);
					msgToServer.flush();
					System.out.println("datos del servidor enviados");
					salir = true;
			}
		}
		catch(Exception e){
 
		}
	}
 
}

el problema está cuando leo los objetos en la clase hiloservidor, se queda en un loop leyendo el objeto no se porque. Lo probé enviando un String y funciona pero con objetos no. La clase ClaseServidor está está en los dos proyectos y está serializada..

Si me pueden ayudar se los agradecería ya que es para un proyecto que estoy haciendo.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Problema con envío de objetos por socket.

Publicado por Luis (9 intervenciones) el 11/01/2017 21:19:25
Tu problema es que no le sacas del bucle while, lo que estas haciendo en el cliente es mandar un objeto y salir, pero en el servidor le sigues dejando a la espera de mas mensajes. Lo que no entiendo es que no se te pare el programa ya que al acabar el cliente la conexión desaparece y en tu servidor te saltaría una exception capturada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con envío de objetos por socket.

Publicado por pablo (2 intervenciones) el 12/01/2017 00:53:30
lo que pasa es que ni siquiera imprime la linea de datos recibidos por el servidor. Se queda leyendo el objeto, también me falto pornerle la condición de parada pero no siquiera llega a esa linea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar