簡體   English   中英

Kryonet未收到自定義課程

[英]Kryonet not receiving custom classes

我試圖建立一個基本的客戶端和服務器來擺脫網絡的困擾,但是我遇到了一個問題。

每當我發送一個帶有自己的類之一作為變量的類時,服務器都不會收到它。 我可以使用string / int / etc作為變量,但無論何時包含我自己類型的變量,都不會接收到它,以及我嘗試在其后發送的所有對象。

一切都在Kryo中注冊。 我只是想念什么嗎? 任何幫助表示贊賞!

從GameClient:

public GameClient(String name) {
    client = new Client();
    client.start();

    NetworkManager.register(client);

    listener = new ClientListener();
    client.addListener(listener);

    try {
        client.connect(5000, "24.207.67.56", NetworkManager.port);
    } catch (Exception e) {
        e.printStackTrace();
    }

    Login login2 = new Login();
    User user2 = new User(name);
    login2.user = user2;
    login2.name = user2.name;
    client.sendTCP(login2); // server does not recieve this

    Login login = new Login();
    login.name = user.name;
    client.sendTCP(login); // server receives this only when it is sent before the Login containing the User

}

從GameServer:

public GameServer() {
    server = new Server();

    NetworkManager.register(server);

    listener = new ServerListener(server);
    server.addListener(listener);

    try {
        server.bind(NetworkManager.port);
    } catch (IOException e) {
        e.printStackTrace();
    }
    server.start();
}

在ServerListener中:

@Override
public void received(Connection c, Object o) {
    System.out.println("recieved");
    if (o instanceof Login) {
        System.out.println("[SERVER] " + ((Login) o).name + " logged in.");
        LoginResult lr = new LoginResult();
        lr.result = true;
        c.sendTCP(lr);
    }
}

從NetworkManager:

public static void register(EndPoint endPoint) {
    Kryo kryo = endPoint.getKryo();
    kryo.register(Login.class);
    kryo.register(User.class);
}

public static class Login {
    public User user;
    public String name;
}

用戶:

public class User {
    public String name;

    public User(String name) {
        this.name = name;
    }
}

因此事實證明,問題是由User類中缺少默認構造函數引起的。 刪除User(String name)構造函數或添加普通的User()構造函數可以解決此問題。

如果您在嘗試錯誤操作時拋出錯誤,它將很有用,但是,哦。

暫無
暫無

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

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