gpt4 book ai didi

Java Kryonet 客户端断开连接

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:12 26 4
gpt4 key购买 nike

我的 kryonet 遇到客户端断开连接的问题。谁能帮我解决这个问题的根源是什么?

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

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

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

经过大量的查找和预期问题原因;我尝试一下

  1. different timeout thresholds
  2. different version of kryo 2.23 and 2.20
  3. using TCP and UPD connection (Note: I connect both in server and client)

这里是客户端代码,如果收到任何对象,请在另一个线程中执行:

  @Override
public void received(Connection connection, Object object) {
if (object instanceof String) {
new Thread() {
@Override
public void run() {
final int RECORD_COUNT = 99999999;
final String RECORD = "Help I am trapped in a fortune cookie factory\n";
List<String> records = new ArrayList<String>(RECORD_COUNT);
for (long i = 0; i < RECORD_COUNT * 4; i++) {
records.add(RECORD);
}
}
}.start();
}
}

客户端日志:

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

00:24 DEBUG: [kryo] Write: KeepAlive
00:28 DEBUG: [kryo] Read: KeepAlive
00:37 DEBUG: [kryo] Write: KeepAlive
00:37 DEBUG: [kryonet] Connection 7 update: An established connection was aborted by the software in your host machine

或者

00:35 DEBUG: [kryo] Read: KeepAlive
00:41 DEBUG: [kryo] Write: KeepAlive
00:50 DEBUG: [kryonet] Connection 8 timed out.

服务器日志:

94:10 DEBUG: [kryo] Write: KeepAlive
94:11 DEBUG: [kryonet] Connection 7 timed out.
94:11 INFO: [kryonet] Connection 7 disconnected.

最佳答案

我认为您没有在单独的线程中启动客户端。

“从r122开始,客户端更新线程被做成守护线程,导致子进程一完成初始化就关闭。”,解决方案是“也许你可以用这个?new Thread(client).start();”。

所以你应该代替

client.start();

你应该使用

new Thread(client).start();

关于Java Kryonet 客户端断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29792858/

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