Blatt 6

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Blatt 6
Kann mir bitte jemand erklären, wie das mit dem Server funktioniert?
Immer wenn ich den TimeServer starte und im Web Browser localhost:12345 eingebe kommt die Meldung “Die Webseite kann nicht angezeigt werden”.


Bei mir funktioniert das einwandfrei… ^^
Konsole offen lassen und Webbrowser eben das eingeben…


Same here


Ich hänge bei der Aufgabe jetzt aber auch extrem…

In der Angabe steht ja, es sollen im Konstruktor der …Impl die Anzahl der Threads, die Portnummer und die Grenzen angegeben werden.
Das heißt doch, ein Objekt der Impl ist dann quasi “der Server”. Dann muss ich doch in der run()-Methode den Thread-Pool erstellen und den ServerSocket usw., oder?

Also das hier in der main():

final int port = 12345;
final int nThreads = 2;
final long lower = 2;
final long upper = 1245;

PrimzahlServerImpl a = new PrimzahlServerImpl(nThreads, port, lower, upper);
new Thread(a).start();

Bloß muss ich dann an den ThreadPool ja wieder ein Runnable schicken, was aber doch nicht die Impl sein kann, weil ich da dann ja die run()-Methode wieder aufrufen würde usw…

Helft mir bitte aus diesem Sumpf, ich find grade nicht mehr raus :wink:

rupran


Im CIP funktioniert der TimeServer bei mir auch, aber zu Hause auf Windows Vista und XP nicht.


Das Ganze ist wirklich etwas verwirrend :wink:
Also das PrimzahlServer Interface leitet sich von Runnable ab,
da man eventuell mehr als einen Server mit jeweils unterschiedlichen Ports in der main() starten will
(oder man will in der main() noch Kaffee kochen, Linux compilieren etc. :wink: spielt aber für die Aufgabe keine Rolle).
Das ist nur mit einem extra Thread möglich der den Server ausführt,
da PrimzahlServerImpl.run() erst zurückkehrt wenn der Socket geschlossen ist.

Das Abarbeiten der Anfragen an den Server wird mit
einer anderen Runnable implementierenden Klasse (also nicht PrimzahlServerImpl ;)) erledigt.


Unter Windows XP hat bei mir http://localhost:12345 auch nicht funktioniert (wieso auch immer…)

Was funktioniert hat:
http://127.0.0.1:12345
im Browser.

oder
telnet localhost 12345


Windows und diverse Browser unter Windows verhalten sich nicht unbedingt intuitiv oder standardgemaess, wenn man keine FQDNs angibt. Die 127.0.0.1 direkt anzugeben muss immer funktionieren, sonst ist wirklich was mit der Software oder das Netzwerk ist total kaputtkonfiguriert (zB durch die allseits beliebten Personal Firewalls).


Das heißt doch dann, dass in der run()-Methode der …Impl quasi ein

Runnable thread = new Runnable(){ public void run(){ handleIt(connection); } }; exec.execute(thread);
steht, oder?
Und davor halt noch das ServerSocket erstellen und drumrum die while(true)-Schleife. (stimmt das? ^^)


Ich würde mal sagen, ausprobieren schadet nicht :wink:


Danke für den Hinweis, bei Vista klappt es so jetzt auch