2014-09-28 1 views
1

KryoNet을 사용하여 네트워킹 관련 내용을 배우고 있는데 서버에서 클라이언트로 개체를 보내면 괜찮은 메시지를 보내고 읽을 수는 있지만 읽을 때 읽을 수는 있지만 다시이 오류가 발생합니다.Kryonet은 한 번 이상 사용자 지정 개체를 보낸 후 연결을 끊습니다.

서버 :

server = new Server(); 
    Kryo kryo = server.getKryo(); 
    kryo.register(Command.class, new JavaSerializer()); 
    server.start(); 
    try { 
     server.bind(54555, 54777); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

클라이언트 :

client = new Client(); 
    Kryo kryo = client.getKryo(); 
    kryo.register(Command.class, new JavaSerializer()); 
    client.setKeepAliveTCP(2000); 
    client.start(); 
    try { 
     client.connect(5000, "192.168.1.5", 54555, 54777); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    client.addListener(new Listener() { 
     public void connected(Connection connection){ 

     } 
     public void received (Connection connection, Object object) { 
      if(object instanceof Command){ 
       Command c = (Command) object; 
       textField.setText(Integer.toString(c.getTime())); 
      } 
     } 
    }); 

MyClass의 :

public class Command implements Serializable{ 

private static final long serialVersionUID = 1L; 
private int time; 

public Command(int time) { 
    setTime(time); 
} 

public int getTime() { 
    return time; 
} 

public void setTime(int time) { 
    this.time = time; 
} 

}

스택 트레이스 :

Exception in thread "Client" com.esotericsoftware.kryo.KryoException: Error during Java deserialization. 
at com.esotericsoftware.kryo.serializers.JavaSerializer.create(JavaSerializer.java:42) 
at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:758) 
at com.esotericsoftware.kryonet.KryoSerialization.read(KryoSerialization.java:57) 
at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:137) 
at com.esotericsoftware.kryonet.Client.update(Client.java:239) 
at com.esotericsoftware.kryonet.Client.run(Client.java:317) 
at java.lang.Thread.run(Unknown Source) 




Caused by: java.io.StreamCorruptedException: invalid stream header: 79737200 
at java.io.ObjectInputStream.readStreamHeader(Unknown Source) 
at java.io.ObjectInputStream.<init>(Unknown Source) 
at com.esotericsoftware.kryo.serializers.JavaSerializer.create(JavaSerializer.java:40) 
... 6 more 

답변

1

수신 한 방법으로 서버에서 가져온 값을 확인해 보았습니까?

나는 Serializable 인터페이스를 구현하고 있기 때문에 데이터가 직렬화되고 정수로부터 String으로 변환하려고 할 때 문제가 발생할 수 있다고 생각한다.

받은 데이터를 역 직렬화하여 어떤 일이 발생하는지보십시오.