如何在java中关闭ServerSocket.accept()命令?
How to close the ServerSocket.accept() command in java?
我的问题是 ServerSocket.accept() 命令一直在等待,直到客户端连接到它。但我想做的是我必须听客户几秒钟。如果客户端连接,则我向客户端发送数据,否则我必须终止 ServerSocket。
那么当一段时间没有客户端连接时,如何绕过 ServerSocket.accept() 命令?
调用 ServerSocket.close()
(当然是从另一个线程)。 SocketException
将因 accept()
上的任何线程阻塞而被抛出,但如果已建立连接,则现有 Socket
仍然可以。
一个简单而幼稚的例子
ServerSocket ss = new ServerSocket(8123);
new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
ss.close();
} catch(InterruptedException e) {
} catch(IOException e) {
}
}
}.start();
Socket s = ss.accept();
我的问题是 ServerSocket.accept() 命令一直在等待,直到客户端连接到它。但我想做的是我必须听客户几秒钟。如果客户端连接,则我向客户端发送数据,否则我必须终止 ServerSocket。
那么当一段时间没有客户端连接时,如何绕过 ServerSocket.accept() 命令?
调用 ServerSocket.close()
(当然是从另一个线程)。 SocketException
将因 accept()
上的任何线程阻塞而被抛出,但如果已建立连接,则现有 Socket
仍然可以。
一个简单而幼稚的例子
ServerSocket ss = new ServerSocket(8123);
new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
ss.close();
} catch(InterruptedException e) {
} catch(IOException e) {
}
}
}.start();
Socket s = ss.accept();