簡體   English   中英

多次發送自定義對象后,Kryonet斷開連接

[英]Kryonet disconnects after sending custom object more than once

我正在學習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()));
            }
        }
     });

我的課:

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

您是否嘗試過以收到的方法檢查從服務器獲取的值?

我認為可能是這種情況,因為您正在實現Serializable接口,因此數據正在被序列化,並且當您嘗試將其從整數轉換為String時,會引起問題。

嘗試反序列化收到的數據,看看會發生什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM