Проблема, прочитав objectos посланные Socket Java

У меня есть проблема, послав объект класса из-за socket. У меня есть класс hiloservidor которая берется за то, чтобы выполнять трэды каждый раз, когда прибыла просьба.

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){}
}

и у меня есть класс клиент:

public class SerDes{
    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){}
    }
}

класс ClaseServidor что находится в двух проектах

public class ClaseServidor implements Serializable{
    String ip;
    int puerto;
    ArrayList<String> coleccion;

    public ClaseServidor(){}

    public ClaseServidor(String ip, int puerto, ArrayList<String> coleccion) {
        super();
        this.ip = ip;
        this.puerto = puerto;
        this.coleccion = coleccion;
    }

    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public int getPuerto() {
        return puerto;
    }
    public void setPuerto(int puerto) {
        this.puerto = puerto;
    }
    public ArrayList<String> getColeccion() {
        return coleccion;
    }
    public void setColeccion(ArrayList<String> coleccion) {
        this.coleccion = coleccion;
    }
}

Проблема, - когда я читаю объекты в классе hiloservidor, остается в loop читая объект не потому что. Я это протестировал посылая String и функционируй, но с объектами не. Класс ClaseServidor будь в двух проектах и будь последовательно преобразована.

1
задан 11.01.2017, 10:31
0 ответов

Увидев твой код немного я думаю, что проблема - что переменная done никогда не бери стоимость true. Ты инициализируешь ее в false в области блока try и я не вижу сайт, где ты меняешь ее.

1
ответ дан 03.12.2019, 17:46
  • 1
    мне не хватало некоего друга размещать эту lí nea, но проблема состояла в том, что в классе клиент не закрывал socket, когда он это посылал. Спасибо равный. –  11.01.2017, 15:47
  • 2
    Но хороший, хотя cerras эта lí nea ты должен помещать ее, если или если –  12.01.2017, 14:01