gpt4 book ai didi

java - Kryonet 没有收到自定义类(class)

转载 作者:行者123 更新时间:2023-11-29 03:21:51 30 4
gpt4 key购买 nike

我正在尝试设置一个基本的客户端和服务器来掌握网络的窍门,但我遇到了一个问题。

每当我发送一个带有我自己的类之一的类作为变量时,服务器都不会接收到它。我可以很好地为变量使用字符串/整数/等,但只要包含我自己类型的变量,它就不会收到,连同我尝试在它之后发送的所有对象。

一切都在 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

}

来自游戏服务器:

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();
}

在服务器监听器中:

@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);
}
}

来自网络管理器:

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() 构造函数可解决此问题。

如果它在您尝试做错时抛出错误,那将会很有用,但是哦,好吧。

关于java - Kryonet 没有收到自定义类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136787/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com