问题标签 [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.
tcp - Kryonet 服务器发送原始字节数组
简单的问题,是否可以使用 Kryonet 发送原始字节数组数据包?客户端不使用 Kryonet 并将读取字节
谢谢
java - 使用 kryonet 和 amazon aws 弹性豆茎
有没有人可以分享在亚马逊 AWS 弹性豆茎中部署 kryonet 服务器的经验?
还有一个更具体的问题——你必须使用固定的 IP 地址还是可以通过 beanstalk 的 url 工作?如果您需要使用固定的 IP 地址,这对 beanstalk 的扩展有何影响?
sockets - Kryonet disconnect() 连接无法获取 TCP 地址
在侦听器中的 disconnect() 方法中,InetSocketAddress 对象始终为空。为什么会这样?
android - P2P message sending using NAT punch-through in Android
I try to send a message from one phone to another using Kryonet (that uses socket communication) and I intend to use NAT punch-through by storing the public address of the clients.
The following code is used:
If the phones are on the same WIFI, it works okay. If one of them is on 3G, I get an external IP address (like: 100.65.96..), and a local address as gateway. As knowing the external IP is the key for NAT PT, I thought it is enough to get the message, but I get a timeout.
What else should I implement to make the 3G phone get the message?
exception - 投射收到的对象时出现 Kryonet 异常(错误?)
我的课堂上有一小段代码扩展了监听器:
每当我收到一个对象时,我都会将它转换为一个名为 Packet 的接口,并使用每个数据包都实现的方法 handle()。然后我将它添加到 ConcurrentLinkedQueue 以供将来处理。
尽管如此,在我向服务器发送 UDP 数据包的几个键发送垃圾邮件后,仍会引发以下异常:
线程“服务器”java.lang.ClassCastException 中的异常:com.esotericsoftware.kryonet.FrameworkMessage$KeepAlive 无法在 com.xkynar.game.net.ServerSocket.received (ServerSocket) 上转换为 com.xkynar.game.net.packet.Packet .java:70) 在 com.esotericsoftware.kryonet.Server$1.received(Server.java:61) 在 com.esotericsoftware.kryonet.Connection.notifyReceived(Connection.java:246) 在 com.esotericsoftware.kryonet.Server.update (Server.java:208) 在 com.esotericsoftware.kryonet.Server.run(Server.java:356) 在 java.lang.Thread.run(Unknown Source)
异常发生在演员表中,即:
这怎么可能?“FrameworkMessage$KeepAlive”到底是什么?为什么它会进入我收到的听众?
请解释什么是错的,是我的错误还是错误?
java - 在 kryonet 中发送和接收数组
我正在使用 kryonet 创建一个服务器/客户端系统。
我正在尝试从服务器向我的客户端发送一个int[][] 。为了完成这个任务,我尝试了这个:
然后,在服务器监听器中,我写道:
最后,在客户端监听器中,我收到了 ArrayPacket:
我像这样注册所有内容:
但是,当我运行它时,我会报错说我必须注册 int[].class。所以我这样做了,再次运行程序,编译器会抛出一个BufferOverflowException:
那么,我该如何解决这个错误呢?
提前致谢。
java - 类似但不同类型消息的数据包组织
在游戏中,服务器可能必须向客户端发送一个包含信息的数据包,比如添加一个敌人。添加此类敌人的数据可能与每个敌人相似(位置、id ...),但需要区分它是哪个敌人。是僵尸吗?狼人?出色地。
我记得有两种方法:
1 - 创建一个枚举。
所以我可以有一个包含每种类型敌人的枚举,并且在我的数据包中,我会发送那种类型。
优点:只有一个数据包可以添加多种类型的敌人,只有一种方法来处理它的接收。
缺点:每次我想添加一个新敌人时,我都必须在枚举上创建一个新条目,而接收的方法很可能是一个烦人的大 switch-case。
2 - 为每个敌人创建一个数据包,每个敌人都有不同的“处理”方法
优点:它“似乎”更有条理,因为每个元素都有一个分配的数据包和方法,并且不需要向枚举添加一个条目(尽管 id 需要添加一个新的句柄方法所以....是的。)
缺点:很多敌人意味着很多数据包,这意味着很多处理方法,这可能是一团糟。
所以,基本上,tl:dr,要么我有一个“PacketAddEnemy”,其中有一个像 EnemyType 这样的枚举和一些 switch-case,或者我有一个“PacketAddZombie”、“PacketAddWerewolf”等,但最终得到了一个垃圾邮件包和方法.
我更喜欢第一个选项,但我不喜欢这两个选项。我想知道是否有有趣的选择?
java - `instanceof` 检查什么来确定对象类型?
我正在使用 kryonet 从服务器和客户端来回发送对象。每当接收到对象时,就会运行一个侦听器。似乎确定对象实例的唯一方法是使用:
我想知道什么 instanceof 检查以确定对象是否属于特定类型。它是否检查类是否与所有代码完全相同,是否检查变量和名称?它是否也检查导入的包?你给我的任何信息都会有所帮助。
我想知道这一点的原因是因为我制作数据包的方式,服务器方法中的代码与客户端不同。例如,在我的客户端发送我做的数据包:
在我的服务器上我这样做:
java - Kryonet 客户端在向服务器发送数据包后断开连接(java)
我正在做一个小型 MMO 项目,现在我正在开发登录/注册系统。每当我尝试发送 ClientLoginPacket 时,客户端都会断开与服务器的连接,并且服务器根本不会接收到数据包。没有显示堆栈跟踪,但这是我的代码。对不起,这很多,但都是必要的:
ClientLoginPacket.java:
那是登录数据包。这个和服务器的唯一区别是导入和包声明(它的archipeloserver 而不仅仅是archipelo)。如您所见,这个类扩展了 Packet,这是我的 Packet 类:
所有数据包都有一个send()
被调用的方法来发送它们。我发送数据包的方式就是这样做new ClientLoginPacket(username, password).send();
。您可以看到 ClientLoginPacket 类运行 Networking.sentTCP(this) 来发送数据包。这只是在我的主要 kryonet 类中运行此代码Networking.java
。这是它用来在客户端发送数据包的代码:
在 kryonet 中,您必须在发送课程之前注册课程。我这样做了,但我不知道我是否做得正确。这是我使用的确切代码。服务器:
客户:
我确定的是,在发送数据包之前我确实与服务器建立了连接,我使用服务器上的连接侦听器对其进行了测试。我的问题是什么?我的班级注册有问题吗?两个类是否必须完全相同?提前致谢!
ps 很抱歉把所有的代码都扔掉了。如果没有必要,我通常不会这样做。我尽量少放。如果您需要更多了解其他东西的工作原理并查看问题是否存在,请问我。谢谢!
java - 无法从外部包导入/引用类
我有两个包 mg.networktest 和 mg.networktest.server,它们都需要访问同一个类来注册/序列化需要通过网络发送的类。我认为最好的做法是在服务器包上创建它并将其包含在客户端中。
但是我无法正确引用该类。我也尝试添加另一个包,但我认为这是不允许的。但它就是无法识别我的其他包裹。下面的导入都得到The import mg.networktest.server cannot be resolved
. 我可以得到它,import mg.networktest.*;
但这只是引用它自己。
为了更清楚:
- 包 1:(mg.networktest.server) 有一个带有 ChatMessage 类的 Network.java。
- 包 2:(mg.networktest)需要包 1 中的 ChatMessage 类。
- 包2:(mg.networktest)不能做:
import mg.network.server.*;
。 - 如何在包 2 (mg.networktest) 中访问包 1 (mg.networktest.server) 中的 ChatMessage 类?