如何在ServerSocket中无阻塞地获取待处理请求数或接受请求数?

时间:2015-04-13 15:38:09

标签: java serversocket

我创建了java.net.ServerSocket

的子类

run方法中,我希望获取所有待处理的请求并向其发送错误消息。

如何使用ServerSocket

这是我的代码:

public class SafeWalkServer extends ServerSocket implements Runnable {

    public SafeWalkServer(int port) throws IOException {
        super(port);

    }

    @Override
    public void run() {
        try {
            boolean isShutdown = false;
            while (!isShutdown) {
                Socket client = accept();
                BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                PrintWriter writer = new PrintWriter(client.getOutputStream());

                if (clientText.startsWith(":RESET"))
**//at this point I need to send error message to all pending requests.**
                        Socket sock = accept(); 
}
}
}
}

我需要许多待处理请求或accept的非阻止变体?

1 个答案:

答案 0 :(得分:1)

您可以使用ServerSocketChannel执行非阻塞套接字。致电configureBlocking(false)进行非阻止。有很多很好的教程(带有示例代码),如The Rox Java NIO Tutorial