
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;
y tengo la clase cliente:
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.
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


0