问题标签 [kryonet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1780 浏览

java - KryoNet:连接后客户端立即断开连接

这似乎是一个流行的问题,但即使在花费大量时间进行故障排除后,我仍然无法找到解决方案。我希望有一个更新的解决方案。

我正在使用 KryoNet Java 网络库设置一个简单的服务器和客户端。我的问题是我的客户端在连接到服务器后立即断开连接。

这是我的代码:

服务器

客户

运行TheServerthen 后TheClient,我的控制台打印:

注意连接和断开之间的时间几乎是即时的,肯定小于我设置的连接超时时间。另请注意,我注释掉了该setKeepAliveTCP()方法,因为虽然我认为没有必要,但我将其插入以查看它是否有效。

0 投票
2 回答
524 浏览

java - Java:如何强制向上转换?

我正在使用 Kryo 库在 Java 中进行序列化。我有一个问题,我无法强制向上转型。这是一个示例情况:

这会导致class not registered错误,因为bar它仍然是B.

有什么方法可以强制bar转换为 的实例A,还是我需要做类似的事情new A(bar)

0 投票
1 回答
495 浏览

java - 不想要的非阻塞套接字与 kryonet

我使用 kryonet 来处理网络上与游戏的数据交换。但我不知道为什么 TCP 套接字和 UDP 套接字变为非阻塞。

所以我很乐意得到一些帮助。

我有一个服务器类和一个客户端类。

这是客户端代码:

这是我在客户端 LogCat 上获得的日志:

0 投票
1 回答
1700 浏览

networking - 如何使用 Kryonet 通过网络发送对象?

我是网络新手,我正在尝试将我使用 java 创建的棋盘游戏联网。我的一个朋友向我介绍了 Kryonet 库。到目前为止,这很棒。我不必处理套接字!

我遇到的问题是发送对象。主要是,我有一个 Board 类型的对象。此对象包含其他对象,例如 ArrayList 对象和 Fort 对象。

我尝试只注册 Board 对象,但收到以下错误:

好吧好吧,那我还要注册Tile.class,

更多错误,但我需要注册 ArrayList.class - 所以我注册它,然后又出现更多错误,所以我注册 Fort.class。

当我注册 Fort.class 时,我进入了一个无限循环并得到了大量的错误,如下所示:

这让我相信我不太了解如何正确注册,也找不到太多关于如何注册嵌套对象的信息。我的 Fort 类实际上是一个枚举类,但我不确定这是否会有所不同?任何帮助将不胜感激!

我已经在我的大部分网络代码中包含了一个类,因此您可以了解我正在尝试做什么。

这是我的网络代码:

0 投票
1 回答
910 浏览

java - 如何在 Kryonet 中注册 Enum 类?

我正在尝试注册我的课程以便通过网络发送信息。我需要注册一个如下所示的 Enum 类:

我正在尝试通过网络发送我的整个游戏板,这要求我注册板中包含的所有子类。主要问题是我在尝试注册我的枚举时卡住了。

这就是我在网络课程中所做的:

当我尝试注册 Fort.class 时,我收到一堆看起来像这样的错误:

我是否错误地注册了我的枚举?关于如何正确执行此操作的任何想法?

谢谢!

0 投票
0 回答
629 浏览

java - 新客户端()上的 Kryonet 给出异常“无法创建序列化程序......”

我正在尝试让一个简单的客户端/服务器类进行通信,以便以后用于实现我的 MP 游戏。问题是Unable to create serializer当我这样做时遇到了这个异常new Client(),这个问题显然可能是由于 ASM 库从 Kryonet jar 中过时引起的。

好吧,我确实做到了:更新库。我仍然得到错误。我继续尝试https://groups.google.com/forum/#!topic/kryonet-users/D5ssaQyWeR4建议的解决方案

而且还是不行……

我不知所措,没有更多的在线解决方案与我尝试过的不同,并且严重浪费了我的时间与这个错误。真的需要克服这一点才能将其扩大到我的游戏中。以下是错误:

现在,这是一个简单的 Client 类:

现在是服务器类:

0 投票
1 回答
700 浏览

java - Kryonet 没有收到自定义课程

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

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

一切都在 Kryo 注册。我只是错过了什么吗?任何帮助表示赞赏!

来自游戏客户端:

从游戏服务器:

在服务器监听器中:

从网络管理器:

用户:

0 投票
0 回答
567 浏览

java - Kryonet 无法从 android 连接

我已经创建了一个客户端和一个服务器,它们都工作正常并且连接没有问题。现在我希望能够从我的安卓手机连接到服务器。我已经导入了 kryonet 库并将客户端代码复制粘贴到一个新的 android 项目中。代码给了我一些错误,但我修复了这些。当我尝试测试我的应用程序时,它没有给我任何错误,但我的服务器也没有获得任何连接。我在 LogCat 日志中查看了一下,发现它一直停留在“正在连接..”。我完全被困住了。这是我的安卓代码:

这是我的正常客户端代码:

所以这:

是它卡在android上的那条线。普通客户端只是正常连接。

现在我的问题是,我的 android 代码有问题,还是只是设备或 wifi 连接?

如果它有帮助,我尝试在我的三星 Galaxy Nexus 上进行测试,它是根植的。

提前致谢。

0 投票
1 回答
1133 浏览

java - KryoNet sendToAllTCP 与 sendTCP

我正在考虑创建一个网络游戏。
游戏应该是一个 2D 平台射击游戏,使用 Libgdx 和 Box2D 创建。
对于网络,我计划了以下结构:

  • 服务器和客户端是2个程序
  • 服务器处理所有游戏逻辑
  • 客户端发送键/鼠标输入
  • 服务器对这些做出反应并更新整个级别
  • 服务器发送这些更新(如果可能,每秒 45 次,因此不需要客户端插值)
  • 客户端通过使用接收到的更新获取更新并更新其本地级别/世界
  • 客户在其绘制的东西view frustum

第一个问题:您如何看待这种结构?
下一个问题:每秒45次可能是从服务器端上传大量数据,如果有几个玩家射出很多子弹(需要发送玩家和子弹位置)。
为了限制所需的上传,我考虑使用view frustum culling并仅发送客户端实际看到的数据/更新。
现在我已经看到了该KryoNet方法sendToAllTCP并想知道,这种方法是否更有效,并且可以以某种方式仅上传一次数据,而不是每个客户端一次。
我对网络没有那么丰富的经验,我真的不认为可以为一个以上的客户上传 1 个文件。但可以肯定的是,我问。
那么发送关卡的每次更新是否更有效?sendToAllTCP还是为每个客户发送一次然后只发送他们可以看到的东西更有效?

0 投票
1 回答
1937 浏览

java - Kryonet 数据包未发送

所以我正在尝试 kryonet,发送一个自定义数据包,但我服务器中的侦听器似乎无法接收到它。

发送:

阅读其他线程,我尝试过使用new Thread(client).start();而不是client.start();,并且我已经向我的数据包类添加了空构造函数,但是客户端要么连接,然后挂起并且永远不会断开连接(如果我使用的是 new Thread(client).start( )) 或连接然后立即断开连接(如果我使用的是 client.start())。没有任何东西被打印出来。任何帮助表示赞赏。