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

时间:2014-02-17 18:57:41

标签: java networking kryo kryonet

这似乎是一个受欢迎的问题,但即使花了很多时间进行故障排除,我仍然无法找到解决方案。我希望有更新的解决方案。

我正在使用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);
    }

}

运行TheServer然后TheClient后,我的控制台会打印:

server started on 8215
connected: 1
disconnected: 1

请注意,连接和断开之间的时间几乎是立即的,当然小于我设置的连接超时时间。另请注意,我注释了setKeepAliveTCP()方法,因为虽然我认为没有必要,但我插入它以查看它是否可行。

1 个答案:

答案 0 :(得分:2)

经过多次digging around之后,我发现用以下方式启动客户端

new Thread(client).start()

而不是

client.start()

解决了这个问题。

  

“从r122开始,客户端更新线程被制作成守护程序线程,导致子进程在完成初始化后立即关闭。”