Threads blocken

Hi,

wie du schon erkannt hast müsstest du das ganze noch in ne Schleife packen. Sonst akzeptiert er die erste Verbindung und läuft dann durch, danach ist der Server Thread weg.
Du könntest z.B. ne Endlosschleife reinbringen (oder besser du überlegst dir n Abbruchkriterium, das eintritt wenns irgendwelche Probleme gibt die die Weiterausführung unmöglich machen)

Code:
while(true) {
try{
        	
              	Socket socket =	serverSocket.accept();
        	                    
        this.out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
				new InputStreamReader(
				socket.getInputStream()));
        ....
        socket.close();
}
...
}

Was du programmierst ist ein sequentieller Server, das heißt er kann nur auf eine einzige Anfrage zur gleichen Zeit reagieren. Arbeitet dein Server gerade eine Anfrage ab, so ignoriert er ganz einfach alle weiteren Anfragen, bis er wieder zu socket.accept() kommt (achja immer schön den Socket schließen wenn Kommunikation beendet).
Jetzt weiß ich natürlich nicht was genau du programmieren willst. Ist das ganze nur lokal mit Client und Server könntest du Client und Server so synchronisieren, dass keiner der Clients eine neue Anfrage stellen kann solange der Server noch an einer Anfrage arbeitet.

Ein anderer Ansatz wäre ein Multithreaded Server. Beim Multithreaded Server erzeugt der Server Thread bei Start eine beliebige Anzahl von weiteren Threads (so genannten Worker-Threads).
Aufgabe des Servers ist nur socket.accept auszuführen und das Socket Objekt in ne Datenstruktur zu werfen. Ein Worker-Thread entnimmt das Socket Objekt und arbeitet die Anfrage ab. So kann der Server beliebig viele (ich meine eine größere Anzahl) Anfragen gleichzeitig bearbeiten.
Hier mal Beispielcode für nen Multithreaded Server:
Server-Code
http://wwwswt.informatik.uni-rostoc...3/examples/MTSocketServer/listenerThread.java

Code von Worker-Thread:
http://wwwswt.informatik.uni-rostoc...g13/examples/MTSocketServer/WorkerThread.java
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort!

Es sollte schon möglich sein, dass mehrere Client auf den Server zugreifen :)
Werd mal einen Multithreaded Server probieren.
 
Zurück