Java KryoNet:客户端在连接后立即断开连接
这似乎是一个普遍存在的问题,但即使花了大量时间排除故障,我仍然难以找到解决方案。我希望有一个更新的解决方案 我正在使用KryoNet Java网络库设置一个简单的服务器和客户端。我的问题是,我的客户端在连接到服务器后立即断开连接 这是我的密码: 服务器Java KryoNet:客户端在连接后立即断开连接,java,networking,kryo,kryonet,Java,Networking,Kryo,Kryonet,这似乎是一个普遍存在的问题,但即使花了大量时间排除故障,我仍然难以找到解决方案。我希望有一个更新的解决方案 我正在使用KryoNet Java网络库设置一个简单的服务器和客户端。我的问题是,我的客户端在连接到服务器后立即断开连接 这是我的密码: 服务器 public class TheServer extends Listener { static Server server; static final int PORT = 8215; public static v
public class TheServer extends Listener {
static Server server;
static final int PORT = 8215;
public static void main(String[] args) throws IOException {
server = new Server();
server.start();
server.bind(PORT);
server.addListener(new TheServer());
System.out.println("server started on " + PORT);
}
public void connected(Connection c) {
System.out.println("connected: " + c.getID());
}
public void disconnected(Connection c) {
System.out.println("disconnected: " + c.getID());
}
}
客户端
public class TheClient extends Listener {
static Client client;
static final String IP = "localhost";
static final int PORT = 8215;
public static void main(String[] args) throws IOException {
client = new Client();
client.start();
client.connect(5000, IP, PORT);
client.addListener(new TheClient());
//client.setKeepAliveTCP(2000);
}
}
在运行服务器和客户端之后,我的控制台会打印:
server started on 8215
connected: 1
disconnected: 1
请注意,连接和断开连接之间的时间几乎是即时的,肯定小于我设置的连接超时时间。还要注意的是,我注释掉了setKeepAliveTCP()
方法,因为虽然我认为没有必要这样做,但我插入了它以查看它是否有效。再过一段时间后,我发现启动客户机时:
新线程(客户端).start()
而不是
client.start()
解决了这个问题
从r122开始,客户端更新线程被设置为守护进程线程,导致子进程在完成初始化后立即关闭
有时候这也不管用。。那么所有注册的类中都应该有一个空构造函数,