问题标签 [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 回答
216 浏览

java - Kryonet:注册的课程必须相同吗?

我正在通过 kryonet 发送一些仅包含“实体”变量的数据包。我自己创建了实体类。问题是在注册实体类时,服务端和客户端的类文件并不完全相同。

在客户端,我没有包含一些方法,因为它们依赖于访问仅服务器端的变量,并且我完全删除了所有构造函数,因为客户端不会是创建实体的那个,服务器会。在服务器范围内,我省略了渲染方法,因为服务器不会渲染。

有什么方法和构造函数真的很重要吗?kryonet 是否只查看变量是否相同(因为它们是相同的)?谢谢!

顺便说一句,如果您想知道,Entity 是一种抽象方法,因此当我创建新类型的实体(例如“Player”)时,它们会扩展它并添加更多方法和变量。我希望也可以将它们发送到一个数据包中。

0 投票
1 回答
563 浏览

java - 我如何托管服务器以便人们可以找到它?

好的,所以基本上我使用 KryoNet 进行服务器-客户端通信,它们连接得很好,并且在测试场景中做我希望他们做的事情。但是,当我尝试从不同网络甚至同一网络中的不同 PC 进行连接时,客户端似乎无法找到服务器...

服务器

和客户端

我注意到服务器总是在我的“本地”地址(192.168.0.***)上创建的,所以有什么方法可以让服务器更加公开,或者我的客户必须使用像Hamatchi这样的东西吗?

0 投票
0 回答
209 浏览

logging - Kryonet MiniLog 不显示任何内容

我通过使用 JetBrains IntelliJ IDEA 14 在 Windows 8 上使用 Kryonet 2.21。这是我的问题:

最近我尝试用 Kryonet 编写一个服务器应用程序,但无论我设置哪个日志级别,日志都不会显示任何内容......我希望有人能理解我的错 - 这是我的代码:

我的对象的构造函数将日志级别设置为“LEVEL_DEBUG”。

您会看到“public void start()”方法。它在 Main 方法中执行,但“服务器已启动!” 永远不会打印在我的控制台上。

这里也没有输出......

在“public void stop()”方法中也是如此。

这些方法通过使用 Switch 语句在 Main 方法中执行。抱歉,如果我的英语不是最好的,我会努力写出易于理解的请求。谢谢 :)

0 投票
1 回答
87 浏览

java - Slick2D 游戏启动然后立即关闭

我一直在使用 Slick2D 和 Kryonet 创建一个非常基本的多人角色扮演游戏。虽然服务器部分和数据库实际上只是即插即用,但我似乎遇到了图形问题。基本上,当启动客户端时,我连接到服务器就好了,成功连接后实际游戏启动。特别没有错误,但在终止客户端之前它会非常短暂地启动到黑屏。

我无法正确格式化代码,因此下面是包含代码的 pastebin 链接。没有抛出任何错误或任何类似的东西,所以我不能 100% 确定要寻找什么。

链接到源

0 投票
1 回答
2143 浏览

java - java.lang.StackOverflowError 使用 Kryo 序列化具有相互引用的对象时

我有一个类似图形的对象,我从服务器发送到客户端,其中nodes包含adjacencyLists.

我有类似的东西:

每次我发送包含这些清除的对象时,我都会收到以下错误:

在 Kryonet 中有解决方法吗?谢谢

0 投票
1 回答
499 浏览

android - Android 上的 Kryo:找不到类“sun.nio.ch.DirectBuffer”

我在 Android 上使用 Kryonet,启动后,VM 因以下错误而崩溃:找不到类 'sun.nio.ch.DirectBuffer',从方法 com.esotericsoftware.kryo.util.UnsafeUtil.releaseBuffer 引用。

问题是什么?

0 投票
1 回答
240 浏览

java - 如何可靠地将游戏服务器 jar 部署到机器上?

好吧,我现在有一个游戏服务器在我的本地开发机器上运行,但我想将它部署到真正的服务器机器上。最简单的方法是将 jar 文件传输到服务器并使用 java -jar server.jar 运行它。但我想可靠地将这个 jar 部署到服务器并让它像守护进程一样运行。如果 server.jar 崩溃或内存不足,上述命令将终止,但我没有重新启动服务器。其次,我希望它可以部署到多个物理服务器。因此 server.jar 在许多物理机器上启动并作为守护进程继续运行。

我曾考虑在 Java EE 中的 servlet 中运行服务器,但我认为这行不通,因为 Java EE 要求您的应用程序不会自行创建套接字。而且因为我使用 kryonet 作为网络库,所以我无法阻止我的应用程序这样做/我不知道如何克服这个问题。

有什么办法可以做我想做的事吗?也许为此任务构建了任何应用程序建议或框架?

谢谢

0 投票
0 回答
270 浏览

java - Java Kryonet 客户端未收到信息

我正在尝试使用 kryonet 创建游戏服务器和客户端。当我连接时,服务器说已连接,但客户端没有收到我发送的信息。

这是连接功能的服务器:

这是接收功能的客户端:

0 投票
1 回答
1082 浏览

java - Java Kryonet 客户端断开连接

我对客户端断开连接的 kryonet 有疑问。谁能帮我解决这个问题的根源?

使用 kryonet 库,为了让客户端保持连接,它需要发送和接收 KeepAlive 数据包。客户端线程会自动处理此问题。但是如果我的客户做繁重的工作(注意:在另一个线程中),它似乎会阻止客户端线程这样做。

问题出现在读取大数据库表时需要时间从表中选择一些列(每个 Gega 的大小)

但是尝试通过在服务器发送任何内容以启动任务后在客户端创建一个非常大的列表来尽可能简化问题

经过大量的搜索和对问题原因的期待;我试试

  1. 不同的超时阈值
  2. 不同版本的 kryo 2.23 和 2.20
  3. 使用 TCP 和 UPD 连接(注意:我在服务器和客户端都连接)

如果收到任何对象,您就是客户端代码 在另一个线程中执行此操作:

客户日志:

在一些 KeepAlive 消息之后,它给出两种类型的消息(连接被中止)或(连接超时)

或者

服务器日志:

0 投票
1 回答
65 浏览

java - Kryonet 不发送一个特定的数据包

我有一个用 kryonet 实现的 Java 网络应用程序。问题是每个数据包都正确发送,但特定类没有到达服务器。我已经注册了所有的课程,这里简要概述一下:

它不传输 ProjectMetaData 而是传输所有其他类(是的,id 是正确的。