gpt4 book ai didi

服务器/客户端无法使用 kryonet 运行的 Android 游戏

转载 作者:太空宇宙 更新时间:2023-11-03 10:19:34 24 4
gpt4 key购买 nike

几天来我一直在努力找出问题所在,更改内容等,但都无济于事。

尝试使用我的三星设备调试客户端时,在 android studio 中出现以下错误:

com.esotericsoftware.kryonet.KryoNetException: Incorrect number of bytes (1 remaining) used to deserialize object: null
at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:146)
at com.esotericsoftware.kryonet.Client.update(Client.java:255)
at com.esotericsoftware.kryonet.Client.run(Client.java:338)
at java.lang.Thread.run(Thread.java:856)

我认为它使用相同的java版本,并且我注册的类完全相同。客户端:

     Client client = new Client();
Kryo kryo = client.getKryo();
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);
client.start();
try{
client.connect(5000, "10.0.0.4", 31055, 32055);
}catch (IOException e) {
throw new GdxRuntimeException(e);
}

SomeRequest request = new SomeRequest();
request.text = "Here is the request";
client.sendTCP(request);

client.addListener(new Listener() {
public void received (Connection connection, Object object) {
if (object instanceof SomeResponse) {
SomeResponse response = (SomeResponse)object;
System.out.println(response.text);
}
}
});

服务器端:

Server server = new Server();
Kryo kryo = server.getKryo();
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);
server.start();
System.out.println("server started");
server.bind(31055, 32055);
server.addListener(new Listener(){
public void connected(Connection connection){
System.out.println("connect");
}

public void received (Connection connection, Object object) {
if (object instanceof SomeRequest) {
SomeRequest request = (SomeRequest)object;
System.out.println(request.text);

SomeResponse response = new SomeResponse();
response.text = "Thanks";
connection.sendTCP(response);
}
}
});

}

类:

class SomeRequest{
public String text;
}
class SomeResponse {
public String text;
}

如您所见,它的代码非常基本,但连接起来简直就是一场噩梦。请帮忙!!我在 android studio 中创建客户端,在 eclipse 中创建服务器。这可能是问题的原因吗?这是我能想到的唯一合乎逻辑的原因。我该如何解决?

最佳答案

我也有这个,它可能是由三件事引起的。

  1. 服务器使用不同的 KryoNet 构建/版本。
  2. 您正在使用不同的 Java 版本进行编译。
  3. 您正在使用两个不同的 IDE 来构建服务器和客户端。

我实际上已经使用 Eclipse 构建了我的服务器,因为我不知道我可以使用 Android Studio 创建 Java 应用程序,而我正在使用它来构建我的客户端应用程序。这同时导致了版本差异,因为我在客户端使用 Gradle 以包含 KryoNet 并手动导入了我在 Eclipse 中可以找到的最接近的版本。

我在开发人员经常光顾的 LibGDX IRC channel 上获得了一些帮助。他们认为版本差异不会成为问题(但它可能)。他们说每当我构建客户端和服务器时,他们都应该使用相同的构建系统。这明显解决了很多不可预见的错误。

当我在 Android studio 中运行一个基本的 Java 项目时,我复制了代码,包括与 Gradle 中的客户端完全相同的 KryoNet 依赖项,一切都按预期工作。最重要的是,我喜欢 Android Studio,现在很高兴将它用于任何 Java 项目。

关于服务器/客户端无法使用 kryonet 运行的 Android 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443398/

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