-1

我有一个Runnable正在等待Socket连接的课程。我想补充JButton一点,这可能会导致它停止等待连接并退出循环。

这是循环

volatile boolean finished = false;

while (!finished) {
    System.out.println("Server Started....");
    clientSocket = serverSocket.accept();    // want to skip this line when the button is pressed
    if (!clientSocket.isClosed() && ServerSettings.getServerStatus() != -1) {
        // start communication
    } else {
        // close connection
    }
}

我寻找了这个问题,并在此处找到了退出循环的解决方案。但这并不能完全解决我的问题。我可以更改finished变量的值,但要检查新值,我仍然需要跳过等待一次。

任何帮助都是可观的。

4

2 回答 2

0

而不是ServerSocket, use ServerSocketChannel,它的accept()方法不会阻塞。从文档:

public abstract SocketChannel accept() throws IOException

接受与此通道的套接字建立的连接。

如果此通道处于非阻塞模式,则如果没有挂起的连接,此方法将立即返回 null。

于 2013-09-28T14:46:53.867 回答
0

您可以调用close()方法。这将停止等待连接。

于 2013-09-28T14:35:13.133 回答