der folgende Code ist Code-Server in meiner App:Java Stop Server Thema
private int serverPort;
private Thread serverThread = null;
public void networkListen(int port){
serverPort = port;
if (serverThread == null){
Runnable serverRunnable = new ServerRunnable();
serverThread = new Thread(serverRunnable);
serverThread.start();
} else {
}
}
public class ServerRunnable implements Runnable {
public void run(){
try {
//networkConnected = false;
//netMessage = "Listening for Connection";
//networkMessage = new NetworkMessage(networkConnected, netMessage);
//setChanged();
//notifyObservers(networkMessage);
ServerSocket serverSocket = new ServerSocket(serverPort, backlog);
commSocket = serverSocket.accept();
serverSocket.close();
serverSocket = null;
//networkConnected = true;
//netMessage = "Connected: " + commSocket.getInetAddress().getHostAddress() + ":" +
//commSocket.getPort();
//networkMessage = new NetworkMessage(networkConnected, netMessage);
//setChanged();
//notifyObservers(networkMessage);
} catch (IOException e){
//networkConnected = false;
//netMessage = "ServerRunnable Network Unavailable";
//System.out.println(e.getMessage());
//networkMessage = new NetworkMessage(networkConnected, netMessage);
//setChanged();
//notifyObservers(networkMessage);
}
}
}
Der Code Art arbeitet das heißt, wenn im einen geraden Verbindung versuchen, beide Enden kommunizieren und zu aktualisieren.
Das Problem ist, während ich auf eine Verbindung höre, wenn ich hören will, dann läuft der Server-Thread weiter und verursacht Probleme.
ich weiß, dass ich .stop() auf einem Thread nicht verwenden sollte, also fragte ich mich, wie die Lösung in diesem Sinne aussehen würde?
BEARBEITEN: nicht benötigten Code auskommentiert.
Vielen Dank für "Break from the Loop" - es ist der Schlüssel! – Kirzilla