|
Computerorientierte Mathematik |
![]() |
|
Inhalt
|
- 6. Programmieraufgabe - Ergänzungen und HinweiseDie Aufgabenstellung und Dokumentation ist leider an einigen Stellen nicht exakt genug beziehungsweise unvollständig. Fragen, die von eurer Seite gestellt wurden und nicht durch die Aufgabenstellung beantwortet werden, wollen wir an dieser Stelle durch Angabe weiterer Details und Hinweise ausräumen.
Ziel der letzten Programmieraufgabe der CoMa ist das Schreiben eines CoMa-Account-Servers. Zur Verwaltung von Webaccounts zählt es, dass die Nutzer ihre essentiellen Daten selbst aktuell halten können. Zu jedem Account-Inhaber werden die folgenden persönlichen Daten gehalten:
Nicht betrachtet wird die Sicherheitsproblematik bei der Datenübertragung. Insbesondere wird mit dem Passwort immer in unverschlüsselter Form gearbeitet. FunktionalitätDer Account-Server hat Zugriff auf die Inhaberdaten über die Nutzer-ID, das ist das einzige Datum welches für jeden Inhaber garantiert eindeutig ist. Die Daten sollt Ihr natürlich in Eurem AVL-Baum, der inzwischen mit parallelen Zugriffen umgehen kann, halten. Zu dem Server kann eine Verbindung hergestellt werden, über die Daten und Kommandos ausgetauscht werden. Eine Verbindung wird jedoch vom Server nur akzepiert, wenn sich der Benutzer durch sein korrektes Passwort autorisieren kann. Das heißt, der Server erwartet zunächst ein Objekt in dem der Client seine Nutzer-ID und sein Passwort mitteilt. Danach kann der Benutzer alle seine Daten abfragen und bis auf die Nutzer-ID verändern beziehungsweise seinen Account löschen. Einzige Ausnahmen sind das Anlegen eines neuen Accounts und das Anfordern des eigenen Passworts, diese sind auch ohne Autorisierung möglich. Die Passwortanforderung soll zum Verschicken des Passworts an die aktuelle E-Mail Adresse des Nutzers führen. Das simulieren wir durch das Anhängen der E-Mail Adresse und des Passwortes an eine Datei. ParallelitätDer Server darf natürlich nicht durch eine einzelne Anfrage blockiert werden. Das heißt, für jede eintreffende Anfrage wird ein neuer Thread, der die Abwicklung übernimmt, geöffnet. Zu dokumentarischen Zwecken soll das Hauptprogramm ein Fenster öffnen, in dem alle Anfragen und Antworten protokolliert werden. Das Hauptprogramm soll alle Parameter der
HilfeDamit Ihr zum Testen Eures Servers nicht auch noch einen Client programmmieren müsst, stellen wir Euch diesen zur Verfügung. Das ist aber nicht nur als Hilfe zu verstehen, sondern auch als Einschränkung. Denn Eurer Server muss mit dem von uns gestellten Client kommunizieren können. Ihr könnt unseren Client über diese Web-Seite
aufforden, Anfragen an Euren Server zu senden. Dazu muss der Client
wissen, unter welcher Adresse und an welchem Port Eurer Server
lauscht. Diese Daten erhaltet Ihr von Eurer
Die für Euch notwendigen Daten erhaltet Ihr hier:
Euer Programm muss auch einen AVL-Baum mit allen 50.000 Accounts bearbeiten können. Die Syntax der Account Datei ist eigentlich selbsterklärend. Das einzige was völlig unlesbar ist sind die Passwörter und die 0 / 1 steht für weiblich / männlich. Das ProtokollWie schon gesagt muss Euer Server mit unserem Client kommuniziren können. Dazu müsst Ihr natürlich wissen, wie die Kommunikation auszusehen hat, d.h. wie lautet das Protokoll, an das sich sowohl der Server als auch der Client zu halten haben. Die Kommunikation zwischen Server und Client erfolgt über
einen Nur wenn der Ausdruck " Um sich mit seinem Passwort beim Server zu autorisieren muss der
Client zunächst an den Server ein Objekt der Klasse
Als Zusatzaufgabe für nicht ausgelastete. Ihr könnt noch ein "time-out" für eine erfolgreiche Autorisierung einfügen. Wurde über die Verbindung für einen bestimmten Zeitraum keine Anfrage geschickt, so wird entweder die Autorisierung zurückgesetzt und der Client muss sich von neuem mit seinem Passwort identifizieren, oder der Server schließt die Verbindung. Schlußbemerkung Überlegt Euch wieder als erstes die genaue Klassenstrukur und
die Aufgabenverteilung zwischen den Klassen. Dokumentiert mit Hilfe
von | |||||||||||||||||||||||||||
|
|
|