serversocket Java服务器socket中断如何
如何停止正在侦听客户端的服务器socket。我的代码如下所示
private ServerSocket serverSocket;
class ServerThread implements Runnable {
private BufferedReader input;
public void run() {
Socket socket = null;
try {
serverSocket = new ServerSocket(SERVE_LISTEN_RPORT);
} catch (IOException e) {
e.printStackTrace();
}
while (!Thread.currentThread().isInterrupted()) {
try {
socket = serverSocket.accept();
try {
this.input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
try {
String read = input.readLine();
//Do something
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当我收到另一个线程的命令时,我需要停止这个线程。我已经提出了一个问题,但不知道如何实施
# 1 楼答案
服务器套接字应该位于
run()
方法之外,并且应该由线程共享现在,当您需要中断正在调用
socket.accept()
的线程时,另一个线程可以调用socket.close()
,并且accept()
将抛出异常# 2 楼答案
下面是一个如何从其他线程关闭套接字的示例: