问题标签 [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 投票
0 回答
26 浏览

java - Java 添加到列表

我正在尝试制作一个简单的 TCP 聊天程序,当用户发送消息“/list”时,我想从服务器回复所有在线用户的列表。

但是,即使我已经测试并知道 online_users 确实包含要添加到 userList.users 的值,命令 userList.users.addAll() 仍然会抛出错误。这是错误:

其中第 128 行是 userList.users.addAll(online_users.values()); 我希望能够简单地将 Map online_users 中的值集合添加到新的字符串列表中并将其发送出去。我不明白为什么会出现错误。

0 投票
1 回答
569 浏览

java - 在 kryonet 中,如何在不停止程序的情况下断开与服务器的连接?

我正在尝试制作一个简单的TCP聊天程序,并且我希望用户能够启动该程序,然后能够输入ip要连接的特定服务器,然后断开与该特定服务器的连接,然后再连接到另一个服务器。

我知道客户端一旦运行就已连接client.connect(timeout, ip, port),但我知道将客户端与服务器断开连接的唯一方法是退出程序。

有没有办法做到这一点?

0 投票
2 回答
695 浏览

java - Java System.out.println() 影响程序流程

我正在使用 KryoNet java 库和 slick 开发基于服务器/客户端的游戏。当服务器类接收到来自客户端的连接时,它会向客户端发送必要的启动信息,包括玩家编号。收到此消息后,客户端开始流畅并开始正常运行。代码是:

当从服务器接收到值时,playerNum 由另一个线程设置。有一段时间我无法让它工作(从未调用 cs.startSlick()),最终我感到沮丧并开始在每次循环运行时记录 playerNum。通过添加 System.out.println(cs.playerNum),代码开始工作,循环将正确评估并启动 slick。

System.out.println 怎么可能做到这一点?我尝试用其他函数替换它,甚至其他将 cs.playerNum 作为参数的函数,但只有当我专门打印 cs.playerNum 时,我才能让循环工作。如果我需要包含更多源,我可以,但问题似乎直接在这里,因为我尝试用其他函数替换 System.out.println 没有成功。

0 投票
1 回答
891 浏览

java - 发送对象时出现 Java Kryonet 错误

我正在使用 Kryonet 进行对象的 TCP 发送,尤其是一个名为 TransferMessage 的对象:

现在,我知道我必须打电话kryo.register(TransferMessage.class),但是当我尝试连接到注册了所有类的服务器时,我收到一个错误:

我不明白,因为虽然我注册的类使用 Color 类,但我以前从未注册过String对象,所以我看不出这里有什么区别,我该如何解决这个错误?预先感谢您的帮助。

编辑

这是一个最小的可重现代码,在序列化时显示错误Color

0 投票
1 回答
333 浏览

java - Kryonet - 缓冲区溢出 - 小对象发送

嗨。一切都在本地主机上运行没有问题。现在服务器设置在专业主机上。错误总是一样的:

代码很简单:

TestPacket 类只有一个字符串。当我通过模拟器连接时,一切正常。当我在三星 Galaxy S4 上打开它时,它会抛出这个异常。

已经尝试增加服务器和客户端构造函数中的缓冲区 - 没有用。

有任何想法吗?

0 投票
0 回答
191 浏览

android - Kryonet - 从相同的 IP 地址连接(不同的 LAN 地址)

假设我在德国有我的 TCP 服务器。

当我尝试从同一 LAN 网络中的两部波兰手机连接时(它们在这里有不同的 ip):

192.168.1.8 和 192.168.1.14

它断开以前的设备。它们都有相同的全局地址,我不知道这是怎么发生的,因为我只存储连接,而不是 InetAddresses:

最好的是,当我在同一台PC上打开两个模拟器时,它们都可以工作+我什至可以添加一部手机Oo

有任何想法吗?:(

0 投票
1 回答
400 浏览

java - java kryonet - ChatMessage - 类未注册

我刚开始使用kryonet。

从示例文件夹运行时,聊天示例运行良好。

如果我将聊天客户端、服务器和网络文件复制到 Eclipse 中的另一个源文件夹中,我会得到 IllegalArgumentException:未注册类:com.esotericsoftware.kryonet.examples.chat.Network$RegisterName(请参见下文)。

我在“kryo.register(ChatMessage.class);”周围添加了打印输出,所以我知道这是被调用的。

客户端挂起尝试连接。

任何指针将不胜感激。

谢谢

0 投票
0 回答
211 浏览

java - android客户端无法使用kryonet连接到PC服务器

我正在尝试创建一个简单的程序来使用 kryonet 库将数据从我的计算机发送到我的 android 应用程序。几乎没有任何关于如何为 android 创建工作客户端的文档。到目前为止,我认为我已经从谷歌搜索问题中收集了足够的信息以使其正常工作,但我仍然无法连接。堆栈跟踪告诉我“java.io.IOException:无法连接到:...”但我知道我的 ip 和端口工作正常,因为我已经使用 ssh 对其进行了测试。

客户端:

包类:

服务器端:

0 投票
1 回答
63 浏览

kryo - Kryonet - 双传入数据包

好的。我收到一次数据包,但它的块被触发了两次。例如:

我有一个这样的块:

在控制台(LOG_TRACE)中,我可以看到,数据包已收到一次,但“STARTTTTTTTTTTTTTTTTT”System.out 显示两次,倒计时显示两次等。

我不想发布整个代码,因为它庞大且难以理解。这可能是由于服务器上的缓冲区溢出引起的,或者可能是因为我在一台设备上同时打开了两个连接?如果有任何有 Kryonet 经验的人,我将不胜感激。

0 投票
0 回答
144 浏览

java - 如何在 kryonet 中注册 JavaFX 类?

我需要一些有关 Kryonet 库的帮助。我创建了一个服务器,其中包含一个用于注册我的课程的网络类。但我使用 JavaFX,我无法注册我需要的所有课程......

例如这项工作:

但是在 Kryonet 中,当我想发送一个 ImageView 时,Kryo 需要我注册所有 ImageView 的属性,比如 Node Orientation。我不能这样做,因为我收到了这个错误:

但 Node$EffectiveOrientationProperty 不是一个类。而仅仅注册 Node.class 对 Kryo 来说是不够的。

请问有人帮我吗?

谢谢你。我很抱歉我的英语不好。