|
Übungen "Vernetzte Systeme"Hier finden Sie die Aufgabenblätter, sowie allfällige weitere Dateien mit Informationen, Programm-Segmenten o.ä. Andreas Frei und Patrick Stuedi haben in ihren Übungsstunden mit diesen Beispielen Java erklärt (vielleicht auch für andere interessant?). Informationen zur Übung 5 Wir haben unseren Instant Messenger Java-Server online gestellt, damit Sie auch lokal bei sich einen eigenen IM-Server zu Test- und Lernzwecken aufsetzen können. Ausserdem steht ein einfacher Echo-Service zur Verfügung. Zum starten geben Sie einfach "java -jar IMServer.jar" bzw. "java -jar echo.jar" ein (und folgen dann den Anweisungen). Informationen zur Java-Lösung 4 Gabor Cselle hat auf die Bedeutung der Fehlerbehandlung im Java-Code hingewiesen. Hier ist eine kurze Beschreibung, um die Grundlagen besser zu verstehen (ausführlicher kann es z.B. im Java-Tutorial nachgelesen werden). Um zu signalisieren, dass zur Laufzeit Fehler aufgetreten sind, werden in Java sogenannte "Exceptions" geworfen. Dies kann man selbst ausprobieren, indem man in den eigenen Code "throw new Exception("Fehler!");" schreibt. Wenn die Virtual Machine das Programm ausführt, und eine Exception geworfen wird, passiert folgendes:
(1) Wenn die Stelle, an der die Exception geworfen wurde, durch ein try/catch-Block vom richtigen Typ umgeben ist, wird in den catch-Block gesprungen. Ein Beispiel: public void a() { try { b(); } catch (IOException e) { System.out.println("Fehler aufgetreten: " + e); } } public void b() throws IOException { if (!out.write()) throw new IOException("Schreibfehler in b"); } Hier wirft b() eine Exception, die erst in a() gefangen wird. Im Beispiel sieht man auch, dass es verschiedene Arten von Fehlern gibt, z.B. die IOException fuer Fehler bei Lese- und Schreibzugriffen. Jede Funktion muss ausserdem explizit deklarieren, wenn sie Exceptions wirft, die nicht in ihr selbst gefangen werden. Dies geschieht bei b() mit dem "throws IOException". Die beiden System-Calls, die wir in der Lösung benutzen, werfen auch Exceptions:
Deshalb müssen wir die Lösung noch umgeben mit: try { /* ... hier der Code von oben ... */ } catch (UnknownHostException e) { System.err.println(e); } catch (IOException e) { System.err.println(e); } Informationen zur Übung 6 Die Abgabe dieser Übung ist für den 13. Mai vorgesehen. Da es wegen des Feiertages aber keine Vorbesprechung gibt, können Sie Ihre Lösung auch erst nach dem 13. Mai einreichen und an diesem Tag allfällige Fragen stellen. Informationen zur Übung 4 (Beachten Sie auch diese allgemeinen Hinweise.) Eiffel: Steps to start and code the Instant Messenger:
1) Extract the "Skeleton_Eiffel.zip" to some folder. If there is any problem, you probably have to fix the paths in the .ace-file. If it doesn't work at all or you still want to start from scratch, notice this additional information regarding the "EiffelNet" and "Thread" libraries:
- "EiffelNet" and "Thread" libraries are included in EiffelStudio 5.5, so you don't have to download them from the Internet. Here are the steps to include these libraries in your project:
1) <switch to german>
Bitte beachten Sie auch (IhrE ÜbungsleiterIn hat Sie sicherlich darauf aufmerksam gemacht), dass das "DATAGRAM_PACKET" in Eiffel die Angewohnheit hat, in die ersten vier Bytes eines UDP-Paketes automatisch (die Sie aber auch setzen können) eine "Nummer" (4-Byte INTEGER) zu schreiben. Dies kann umgangen werden, wenn Sie anstelle dessen ein "PACKET" verwenden. Leider funktioniert zumindest nach unserer Erfahrung nur die send-Methode mit einem "PACKET". Die entsprechende receive-Methode verursacht bei uns nicht-behebbare Fehler. Daher müssen Sie beim Empfang eines Paketes die ersten vier Bytes aus der "Nummer" extrahieren und den Rest aus dem eigentlichen Daten-Bereich. Haben Sie die gekennzeichneten Methoden aus den Klassen "MESSAGE_RECEIVER" und "MESSAGE_SENDER" implementiert, sollten Ihr IM-Client etwa so aussehen:
Sollten Sie weitere Fragen haben, wenden Sie sich bitte an IhreN ÜbungsleiterIn (oder direkt an Angela Nicoara). Java: Sie können die .java-Dateien aus dem "Skeleton_java.zip" einfach in ein neues eclipse-Projekt importieren. Dort müssen Sie dann in den Klassen "MessageSender" und "MessageReceiver" die gekennzeichneten Methoden implementieren. Haben Sie das erfolgreich getan, sollte Ihr IM-Client etwa so aussehen:
Sollten Sie weitere Fragen haben, wenden Sie sich bitte an IhreN ÜbungsleiterIn. Aufgabenblätter und Lösungen |
This is part of a spam project. Please do NOT use the following email addresses. They are exclusively used to gather spam!
1@ka-z.net, 2@ka-z.net, 3@ka-z.net, 4@ka-z.net, 5@ka-z.net, 6@ka-z.net, 7@ka-z.net, 8@ka-z.net, 9@ka-z.net, 10@ka-z.net, 21@ka-z.net, 22@ka-z.net, 23@ka-z.net, 24@ka-z.net, 25@ka-z.net, 26@ka-z.net, 27@ka-z.net, 28@ka-z.net, 29@ka-z.net, 30@ka-z.net, 31@ka-z.net, 32@ka-z.net, 33@ka-z.net, 34@ka-z.net, 35@ka-z.net, 36@ka-z.net, 37@ka-z.net, 38@ka-z.net, 39@ka-z.net, 40@ka-z.net, 1000@ka-z.net, 1001@ka-z.net, 1002@ka-z.net, 1003@ka-z.net, 1004@ka-z.net, 1005@ka-z.net, 1006@ka-z.net, 1007@ka-z.net, 1008@ka-z.net, 1009@ka-z.net, 1010@ka-z.net, 1011@ka-z.net, 1012@ka-z.net, 1013@ka-z.net, 1014@ka-z.net, 1015@ka-z.net, 1016@ka-z.net, 1017@ka-z.net, 1018@ka-z.net, 1019@ka-z.net, 1020@ka-z.net, 1021@ka-z.net, 1022@ka-z.net, 1023@ka-z.net, 1024@ka-z.net, 1025@ka-z.net, 1026@ka-z.net, 1027@ka-z.net, 1028@ka-z.net, 1029@ka-z.net, 1030@ka-z.net, 1031@ka-z.net, 1032@ka-z.net, 1033@ka-z.net, 1034@ka-z.net, 1035@ka-z.net, 1036@ka-z.net, 1037@ka-z.net, 1038@ka-z.net, 1039@ka-z.net, 1040@ka-z.net, 1041@ka-z.net, 1042@ka-z.net, 1043@ka-z.net, 1044@ka-z.net, 1045@ka-z.net, 1046@ka-z.net, 1047@ka-z.net, 1048@ka-z.net, 1049@ka-z.net, 1050@ka-z.net, 1051@ka-z.net, 1052@ka-z.net, 1053@ka-z.net, 1054@ka-z.net, 1055@ka-z.net, 1056@ka-z.net, 1057@ka-z.net, 1058@ka-z.net, 1059@ka-z.net, 1060@ka-z.net, 1061@ka-z.net, 1062@ka-z.net, 1063@ka-z.net, 1064@ka-z.net, 1065@ka-z.net, 1066@ka-z.net, 1067@ka-z.net, 1068@ka-z.net, 1069@ka-z.net, 1070@ka-z.net, 1071@ka-z.net, 1072@ka-z.net, 1073@ka-z.net, 1074@ka-z.net, 1075@ka-z.net, 1076@ka-z.net, 1077@ka-z.net, 1078@ka-z.net, 1079@ka-z.net, 1080@ka-z.net, 1081@ka-z.net, 1082@ka-z.net, 1083@ka-z.net, 1084@ka-z.net, 1085@ka-z.net, 1086@ka-z.net, 1087@ka-z.net, 1088@ka-z.net, 1089@ka-z.net, 1090@ka-z.net, 1091@ka-z.net, 1092@ka-z.net, 1093@ka-z.net, 1094@ka-z.net, 1095@ka-z.net, 1096@ka-z.net, 1097@ka-z.net, 1098@ka-z.net, 1099@ka-z.net, kenoa@tik.ee.ethz.ch,
Verantwortlich: Keno Albrecht, Distributed Computing Group SS 2005 |