我試圖設置一個基本的客戶端和服務器來獲取網絡連接,但我遇到了一個問題。Kryonet沒有收到自定義類
每當我用自己的類中的一個作爲變量發送一個類時,服務器就不會收到它。我可以使用字符串/ 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
}
從遊戲服務器:
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);
}
}
從網絡管理器:
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;
}
}
請包括[相關部分的代碼](http://stackoverflow.com/help/mcve),而不是一般性地描述它。具體說明*你想要完成什麼,以及結果與預期結果的不同。請閱讀這個[關於提出好問題的建議](http://stackoverflow.com/help/how-to-ask)和這篇博文[寫完美的問題](http://msmvps.com/blogs/jon_skeet/存檔/ 2010/8月29日/寫最完美-question.aspx)。請特別注意「黃金法則」,但我強烈建議您閱讀整篇文章。 –