Java-Server-Socket zu Unterbrechen, Wie
Wie kann ich verhindern, dass ein server-socket ist empfangsbereit-client. Mein code wie folgt Aussehen
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();
}
}
}
Muss ich halt diesen thread wenn ich einen Befehl aus einem anderen thread. Ich schon sau diese Frage, aber keine Ahnung, wie es zu implementieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel, wie man einen socket schließen aus dem anderen thread:
ServerSocket
volatile
- das wird dazu führen, dass einige schrecklich unberechenbar Rennen Gefahren.Den server-socket sollte außerhalb der
run()
Methode und sollte von threads gemeinsam genutzt.Nun, wenn Sie brauchen, um zu unterbrechen, den Thread aufrufen
socket.accept()
, der andere thread aufrufen kannsocket.close()
undaccept()
werfen eine Ausnahme.