Verständnisfrage Multi-Threaded Client/Server

AlexM

Mitglied
Hallo leute,
ich beschäftige mich gerade mit der Server/Client Programmierung in Java und habe ein beispiel Quelltext zu dem Thema gefunden.

How To Write A Multi-Threaded Client-Server Communications in Java - Tech Wikipedia

Wenn ich das ganze jedoch ausführe (mit mehr als 1 Client) muss ich feststellen, dass sich immer nur ein Client mit dem Server verbinden kann. Die Clients werden im Quelltext in einem eigenen Thread bearbeitet ... kann mir einer sagen woran das liegt? Ist Code falsch oder führe ich es falsch aus?

Mit freundlichen Grüßen,
Alex M.
 

AlexM

Mitglied
Hi,
danke für deine antwort. Kannst du vielleicht sagen woran das liegt? Wo der fehler ist?

Mit freundlichen Grüßen,
Alex M


Edit :

Ich habe die Server klasse bei der while schleife bisschen geändert und es scheint jetzt zu gehen.

Java:
while (listening) {
			
			Socket client = serverSocket.accept();
			
			ConnectionRequestHandler c = new ConnectionRequestHandler(client);
			
			Thread t = new Thread(c);
	        t.start();
			
		}
 
		serverSocket.close();
	}
 
	/*private void handleClientRequest(ServerSocket serverSocket) {
		try {
			new ConnectionRequestHandler(serverSocket.accept()).run();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}*/

Und es scheint jetzt zu gehen. Kann mir einer sagen ob es so passt?
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Es wird von einer Trhead Klasse geerbt, aber weder die Run Methode überschrieben noch "start()" ausgeführt.

Das Runnable wird zwar implementiert, aber es wird nur "run()" aufgerufen, statt die Runable an ein Thread zu übergeben und darauf dann start() und nicht run auszuführen.
 

AlexM

Mitglied
Hi,
danke für deine Antwort.
Ich habe meinen Post oben geändert. Kannst du mal drüberschauen?

Mit freundlichen Grüßen
Alex M.
 

Highchiller

Bekanntes Mitglied
Ja so müsste es passen. Noch mal zu Erklärung:
Ein Programmierfehler, der Anfängern schnell unterläuft, ist folgender: Statt start() rufen sie aus Versehen run() auf dem Thread auf. Was geschieht? Fast genau das Gleiche wie bei start(), nur mit dem Unterschied, dass die Objektmethode run() nicht parallel zum übrigen Programm abgearbeitet wird. Der aktuelle Thread bearbeitet die run()-Methode sequenziell, bis sie zu Ende ist und die Anweisungen nach dem Aufruf an die Reihe kommen. Der Fehler fällt nicht immer direkt auf, denn die Aktionen in run() finden ja statt – nur eben nicht nebenläufig.
Quelle: Java 7 - Mehr als eine Insel; Abschnitt: Ja, wo laufen sie denn?
 

Ähnliche Java Themen

Neue Themen


Oben