Server Socket Start / Stop

precoc

Mitglied
Ich habe zwei Buttons in meiner GUI einmal den Start Button ( der den Server Socket öffnet und per Thread start() am Port wartet auf einen Eingangs Stream) und den Stop Button der den Server Socket schließen soll, der geöffnet wurde. Hier nun der Ablauf :
1. Programm wird gestartet, GUI / Fenster öffnet sich
2. dürcke auf Start Button, Server Socket wird geöffnet und Methode listenPortOnce() wird gestartet
3. Son nun möchte ich den Server Socket mit dem Stop Button schließen, hier kommt noch kein Fehler und der Server Socket scheint geschlossen zu sein
4. Will ich nun aber den Server Socket wieder starten und drücke auf den Start Button, bekomme ich folgenden Fehler:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at de.window.MyWindow.actionPerformed(MyWindow.java:41)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

und der Server Socket wird nicht wieder gestartet! .. Folgend nun der Code:

Die Action Events der Buttons
Java:
@Override
	public void actionPerformed(ActionEvent e) {
		/*///////////////////////////////////////////////////////////////
		 * Button Start
		 *//////////////////////////////////////////////////////////////
		if(e.getActionCommand().equals("start")){
			int port = Integer.parseInt(portNumber.getText());
			
			rH.startReceivePort(port);
			konsole.setText(konsole.getText() + "Server gestartet.." + "\n");
			rH.start();
			konsole.setText(konsole.getText() + "Server Port "+ port + " gestartet.." + "\n");
			
		}
		
		/*///////////////////////////////////////////////////////////////
		 * Button Stop
		 *//////////////////////////////////////////////////////////////
		if(e.getActionCommand().equals("stop")){
			rH.closeReceivePort();
			konsole.setText(konsole.getText() + "Server gestopt.." + "\n");
		}
	}

über die Methode rH.start() wird die methode rH.run() aufgerufen und in dieser wird listenPortonce() der selben Klasse aufgerufen

Klassen Kopf
Java:
public class receiverHost extends Thread{

Methode listenPortOnce()
Java:
public boolean listenPortOnce(){
    while (true  ) {
            try {
                 this.contentPaket = this.server.accept();
                 if(this.MSG == 1) System.out.println("Listen on Port..." + this.receivePort);
                 if(this.MSG == 1) System.out.println(readContent());
                
                 return true;
            } catch (IOException e) {
                //if(this.ERR == 1)System.err.println("IOEx1...");
               //if(ERR == 1)e.printStackTrace();
                return false;
            }
        }
    }

zu guter letzt die Methode die über den Stop Button aufgerufen wird closeReceivePort()
Java:
public void closeReceivePort(){
        if (this.server != null){
            try {
                this.server.close();
                if(this.ERR == 1)System.out.println("Close Receive Port... " + this.receivePort);          
            } catch (IOException e) {
                if(this.ERR == 1)System.err.println("Port nicht zu schliessen...");
                if(this.ERR == 1)e.printStackTrace();               
            }
        }else{
            if(this.ERR == 1)System.err.println("Kein Port wurde geöffnet...");
        }
 
    }

Ich möchte einfach nur wissen wie ich beliebig oft den Server Starten und Stopen kann und dies nicht nur einmal pro Lebensdauer eines Fensters.

zur weiteren Erklärung, die Methode rH.startReceivePort(port); startet den Server Socket

und die Methode readContent() liest den Inptutstream in eine String.

Hoffentlich versteht man mein Problem, ich bin noch neu in der Java Programmierung, also seid bitte gütig zu mir!
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Kann es sein, dass Du den selben Thread versuchst nochmal zu starten? Das geht nicht, ein Thread kann nur einmal ausgeführt werden, Du müsstest einen neuen Thread erzeugen. Besser als "extends Thread" wäre "implements Runnable". Das Runnable Objekt könntest Du im neuen Thread einfach wiederverwenden.
Wie stoppst Du denn das ganze? Deine Schleife in der listenPortOnce() ist ja eine Endlosschleife.
Je nachdem wie sauber man das ganze machen will, könnte man aus einem anderen Thread ein close() auf das ServerSocket aufrufen, um das blockierende accept() abzubrechen - dabei wird allerdings eine IOException geworfen. Beim "Neustarten" erzeugt man einfach ein neues ServerSocket und geht dann wie gehabt in die accept() Schleife.
 

precoc

Mitglied
Meinst du auf diese Art einen neuen thread Starten?

Java:
new Thread(
    new Runnable() {
        @Override
        public void run() {
        /*
          inhalt des neuen Threads
          rH.listenPortOnce()
        */
}
}
)

an der stelle wo jetzt rH.start() steht ?
 
Zuletzt bearbeitet:

Michael...

Top Contributor
z.B. wobei es ausreichen würde nur einen neuen Thread zu erstellen. Das Runnable Objekt könnte einmal erstellt und immer wieder verwendet werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Socket Server -> lesen von / schreiben zu php-script Netzwerkprogrammierung 6
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
Z Kann nicht Daten vom Server lesen Socket Netzwerkprogrammierung 10
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
D Socket server auf Smartphone Netzwerkprogrammierung 9
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
A Socket Socket Server netcat Netzwerkprogrammierung 1
Shams Anfängerfrage zu Server-Socket-Kommunikation Netzwerkprogrammierung 2
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
M SSl Socket Server und openssl key Netzwerkprogrammierung 3
A Socket Server: Message an verschiedene Clients senden Netzwerkprogrammierung 4
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
Y client server socket via internet Netzwerkprogrammierung 8
A Socket Server-Socket wiederholt starten Netzwerkprogrammierung 3
E Socket HTTP-Server Netzwerkprogrammierung 6
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
S SSL Socket zu IRC Server aufbauen? Netzwerkprogrammierung 10
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
H Socket Socket verbindung mit einem TeamSpeak2 Server Netzwerkprogrammierung 5
P über Socket Kommando an Win2000-Server absetzen Netzwerkprogrammierung 12
N Über Socket an Linux-Server Kommandos absetzen? Netzwerkprogrammierung 4
B Server socket springt nicht gleich an Netzwerkprogrammierung 3
C Verbindung zum Server prüfen mit einem vorhandenem Socket Netzwerkprogrammierung 4
M TCP Socket und Server int senden und empfangen Netzwerkprogrammierung 6
W Socket Client-Server Verbindung. Wie Strings senden? Netzwerkprogrammierung 6
A http request per socket an apache server Netzwerkprogrammierung 5
M Vom Server per Socket Empfangen, aber wieviel Bytes? Netzwerkprogrammierung 11
D Server Socket läuft nicht -> java.net.SocketException: Netzwerkprogrammierung 4
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
E Server mit GUI Netzwerkprogrammierung 4
E FTP FTPS Server gibt Fehlernachricht "522 SSL/TLS required on the data channel" zurück Netzwerkprogrammierung 1
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
Eigenen Rechner als Server? Netzwerkprogrammierung 16
FrankenDerStein HTTP Https Server Bibliothek für Linux und Android gesucht. Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
J Datei Download vom Server Netzwerkprogrammierung 8
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
J Multithreaded-Server Netzwerkprogrammierung 21
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
L30nS RMI RMI-Server kann Dialog nicht volkommen anzeigen Netzwerkprogrammierung 2
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
F NodeJs-Server auf Firebase hosten ? Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
H HTTP Glassfish (v5) Application Server - Bibliothek zur Verfügung stellen Netzwerkprogrammierung 4
B HttpClient - Server (Jetty) - getInputStream - EOF Netzwerkprogrammierung 3
P TCP-Server Netzwerkprogrammierung 1
F Server für Java Applikationen Netzwerkprogrammierung 16
H Einfacher Server funktioniert nicht Netzwerkprogrammierung 1
G Server-Client IO Problem Netzwerkprogrammierung 6
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
L Socket Wie kann ich checken ob ein User eine Nachricht per Outputstream an den Server gesendet hat? Netzwerkprogrammierung 1
T Jetty Server LOGGING Netzwerkprogrammierung 1
L Strings an Server senden und in MYSQL speichern? Netzwerkprogrammierung 3
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
T server empfängt nur 1 Buchstaben vom String Netzwerkprogrammierung 1
S Spiel mit Server programmieren Netzwerkprogrammierung 2
N Post u Head Request an Server Netzwerkprogrammierung 4
J Socket Ein Chat Server Tutorial Netzwerkprogrammierung 8
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
J Socket Tutorial zu Multiplayer Server schreiben? Netzwerkprogrammierung 5
S Java Chat Server Netzwerkprogrammierung 8
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
KaffeeFan Programmierung mit Cloud-Server Netzwerkprogrammierung 0
L Socket Problem mit Server Netzwerkprogrammierung 1
cezary Socket Paralleler Server ? Netzwerkprogrammierung 1
I Socket Leicht zu DDosender Server Netzwerkprogrammierung 4
agent47 HTTPs Server Netzwerkprogrammierung 5
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
J Prüfen, ob remote UDT Server erreichbar ist Netzwerkprogrammierung 0
P Server als Client nutzen Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben