Computerorientierte
Mathematik II Sommersemester 2000 Joswig / Jahn / Liebchen / Schwartz eCommerce-Programmieraufgabe |
|
TextArea
!
ComaEcomInfoRequest
an den Server
gestellt werden, in deren Antwort ein Bild enthalten sein kann.
Wenn in der Tat ein Bild existiert, dann soll es angezeigt
werden.
paint
recht selten aufgerufen wird.
Letzteres will sagen, dass ihr einen Button
vorsehen sollt, mit dem der Benutzer die Zeichnung des
Bildes explizit anstoßen kann.
/etc/protocols
) und einer zusätzlichen
so genannten Portnummer. Da auf jedem Rechner jeder Portnummer höchstens
ein Prozess zugeordnet ist, kann der Empfängerprozess eines Datenpakets
ausgemacht werden: Zuerst wird das Datenpaket an den durch die IP-Adresse
gekennzeichneten Rechner gesendet und dieser verteilt es dann
über die Portnummer an eine auf ihm laufende Applikation.
ftp
, telnet
oder http
Internet-Dienste sind, fügen auch sie
sich in die oben skizzierte Hierarchie ein und besitzen insbesondere
eine Portnummer. Für diese und einige weitere Dienste sind
Standardportnummern vereinbart, z.B. 23 für telnet
.
Eine vollständige Liste befindet sich auf UNIX-Systemen in der
Regel unter /etc/services
. Die Portnummern bis 1023
sind für derartige Dienste reserviert, so dass wir uns bei der
Wahl der für uns relevanten 16-Bit langen Portnummern auf den
Bereich oberhalb von 1024 beschränken müssen.
Eine gründlichere Beschreibung der allgemeinen Sachverhalte zu
TCP/IP
könnt ihr euch gerne im Java-Tutorial zu Gemüte führen.
Dort gibt es auch noch einmal eine gründliche und Java-spezifische
Beschreibung zu
Sockets.
Serializable
-Interface implementieren. Da wir
euch die zu versendenden Klassen beide zur Verfügung stellen,
habt ihr damit für diese Programmieraufgabe nichts zu tun. Da nun aber
Wissen selten geschadet hat, möchten wir euch trotzdem auf die
ausführliche Beschreibung von
Serialisierung
im Java-Tutorial hinweisen...
java.applet.Applet.getCodeBase()
java.net.URL.getHost()
java.net.Socket(InetAddress, int)
java.net.Socket.getInputStream()
java.net.Socket.getOutputStream()
java.io.ObjectInputStream(InputStream)
java.io.ObjectInputStream.readObject()
java.io.ObjectOutputStream(OutputStream)
java.io.ObjectOutputStream.writeObject(Object)
java.io.EOFException
ComaEcomServer
.
Diese stellt die Möglichkeit zur Verfügung, Anfragen von
Applets entgegen zu nehmen und sie an das zentrale Verlagsdepot
weiterzuleiten. Das einzige, was ihr mit ihr tun sollt,
ist zu Beginn eurer Sitzung einmalfb3-c22:~ % java ComaEcomServer &
fb3-c22:~ % ps
11111 pts 0 0:00 ps
13579 pts 0 0:00 java ComaEcomServer
fb3-c22:~ % kill 13579
getCodeBase()
zu
referenzieren) unter der
Portnummer 1235 Anfragen eurer Applets
entgegen nehmen.
Die vier Klassen
müsst ihr nun aber offensiv in eurem Code nutzen. Unter
dem Punkt ComaEcom-Kommunikationsprotokoll
beschreiben wir, in welchem Format euer Applet mit Hilfe dieser
Klassen Anfragen an den von uns implementierten und bei
euch laufenden Server stellen muss, um sinnvolle
Antworten zu erhalten. Beim
download der class
-Files
könnt ihr euch aussuchen, ob ihr sie einzeln ladet, oder
als ein zip-file. Wir raten euch, eine eigene Artikelklasse
zu definieren, die ihr aus einer Instanz von
ComaEcomInfoRequest
konstruieren
könnt, und die ihrerseits vorsieht, für den repräsentierten
Artikel eine neue Instanz von ComaEcomOrderRequest
als auch von ComaEcomInfoRequest
konstruieren zu können.
ComaEcomInfoRequest
mit einer CAN
,
die einen verfügbaren Artikel referenziert:ComaEcomInfoRequest
gesendet, welche den aktuellen Preis, die momentan verfügbare
Stückzahl sowie ggf. ein das Produkt beschreibendes Bild
enthält.
ComaEcomInfoRequest
mit einer CAN
,
die keinen verfügbaren Artikel referenziert:ComaEcomInvalidRequest
zurückgesendet, aus der hervorgeht, dass die angeforderte
Artikelnummer nicht existiert.
ComaEcomMultiRequest
:ComaEcomInfoRequest
bereitgestellt
und nacheinander durch die bestehende Socket geschickt.
Keine der erzeugten Instanzen von ComaEcomInfoRequest
wird
dabei ein Bild enthalten.
ComaEcomOrderRequest
mit einer CAN
,
die einen verfügbaren Artikel referenziert:ComaEcomOrderRequest
zurück geschickt, aus der hervorgeht, ob die Bestellung angenommen
werden konnte, oder nicht.
Eine Bestellung kann beispielsweise nicht ausgeführt werden, wenn
der in eurer eingehenden Bestellung festgeschriebene Preis nicht
mehr aktuell ist, oder wenn die in der eingehenden Bestellung
geforderte Stückzahl nicht beliefert werden kann. In diesen beiden
Fällen sind dann die entsprechenden Felder der Antwort-Instanz
mit den zum aktuellen Zeitpunkt gültigen Werten gefüllt.
ComaEcomOrderRequest
mit einer CAN
die keinen verfügbaren Artikel referenziert:ComaEcomInvalidRequest
zurückgesendet, aus der hervorgeht, dass die angeforderte
Artikelnummer nicht existiert.
ComaEcomInvalidRequest
zurückgesendet, aus der hervorgeht, dass die angeforderte Anfrage
keinem bekannten Anfragetyp entspricht.
Christian Liebchen Last modified: Thu Jun 15 15:00:42 MET DST 2000 $Id: index.html,v 1.3 2000/06/15 14:05:06 schwartz Exp schwartz $ |