Java ServerSocket接受方法连续监听

时间:2016-10-21 16:29:05

标签: java server

我需要不断收听一个客户端并回复两条消息。

我不确定accept方法是如何工作的。我知道它正在打开与客户端的连接并返回该连接。

但是下一循环会发生什么?是否会阻止来自客户端的下一条消息到达? 此外,下面的代码是一个很好的方法来解决这个问题吗?

ServerSocket ss = new ServerSocket();
while(true) {
    Socket socket = serverSocket.accept();

    //Retreive message from client here

    if(incomingFromClient.equals(something)) {
        ReplyThread rt = new ReplyThread(socket, reply_1);
        rt.start()
    } else if(incomingFromClient.equals(somethingElse)) {
        ReplyThread rt = new ReplyThread(socket, reply_2);
        rt.start();
    }
}

1 个答案:

答案 0 :(得分:0)

没有。您永远不应该在accept循环中对客户端进行任何I / O操作。否则,流氓客户端可以阻止世界并阻止后续客户端获得任何服务。您为每个接受套接字启动的线程应该执行该套接字的所有I / O.