Java KryoNet:客户端在连接后立即断开连接

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

这似乎是一个普遍存在的问题,但即使花了大量时间排除故障,我仍然难以找到解决方案。我希望有一个更新的解决方案

我正在使用KryoNet Java网络库设置一个简单的服务器和客户端。我的问题是,我的客户端在连接到服务器后立即断开连接

这是我的密码:

服务器

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开始,客户端更新线程被设置为守护进程线程,导致子进程在完成初始化后立即关闭


有时候这也不管用。。那么所有注册的类中都应该有一个空构造函数,