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

标签 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 的非阻塞变体?

最佳答案

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

关于java - 如何在 ServerSocket 中不阻塞地获取待处理请求数或接受请求数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29609411/

相关文章:

java - 线程内的方法不会被调用

java - ServerSocket可以在从客户端读取之前先写入客户端吗?

java - 通过匿名接口(interface)进行 Fragment 到 Activity 的通信

python - 我的简单客户端每次尝试连接到我的 python 套接字服务器时都会崩溃

java - 新的抽象类和实现

java - Java中获取DatagramSocket接收缓冲区的剩余可用空间长度

java - 如何通过 java 中的套接字编程传输 zip 文件?

java - 具有多客户端的 ServerSocket

java - 记录 EJB3 Web 服务

java - 如何在 GWT 中解析大数据 (XML)