Allgemein
Jedes Applet ist in mehrere (nicht sichtbare)Fenster unterteilt.
- Applet
- Grafikbereich
- Client
- Steuerungsbereich
- Kommunikationsbereich
- Server
- Steuerungsbereich
- Kommunikationsbereich
Im Grafikbereich wird die Kommunikation zwischen Client und Server dargestellt.
Der Client-Steuerungsbereich bzw. Server-Steuerungsbereich ist für den
Verbindungsaufbau bzw. -abbau. Ein Verbindungsaufbau bzw. -abbau kann entweder
durch anklicken der Buttons (benutzergeführt) oder durch Aufruf der Funktionen stattfinden.
Die richtige Reihenfolge kann unter anderem
aus den Beispielen entnommen werden. Dann können an
den Server Daten übertragen und Dienste in Anspruch genommen werden.
Das Feld Client-Kommunikationbereich dient zum Eintragen von Daten und Umschalten
der Betriebsmoduse. Es gibt vier verschiendene Betriebsmodi zwischen denen man
wahlweise hin und her schalten kann. Beim Umschalten werden die Daten, die noch zur
Bearbeitung oder zum Zurücksenden auf dem Server gespeicht sind, gelöscht.
Nicht aber die Daten, die vom Server zurückgeschickt worden sind, aber noch nicht
in den Client eingelesen wurden. Beim Betätigen der linken Maustaste öffnet sich ein
Dialogfenster, welches einen kleinen Text darstellt, der die Funktionsweise des Bereiches
näher erklären soll.
Echo Modus :
Ankommende Daten werden einfach zurückgesendet.
Text Modus :
Es können mehrere Texte vom Server abgerufen werden. Dazu
muß in das Eingabefeld text und die Nummer des Textes
eingetragen werden und dann dem Server geschickt werden.
z. B. text2 (für den zweiten Text).
Services Modus :
Es werden immer zwei Zahlen addiert addiert und das Ergebniss zurück
gesendet.
Help Betrieb :
Hier können Suchbegriffe für Sockets (accept,bind,close,...) eingegeben
werden und eine kleine Erklärung wird zurückgesendet.
Im Server-Kommunikationbereich werden die Daten, die beim Server ankommen, bzw.
abgeschickt werden, dargestellt.
Damit eine Netzverbindung zu stande kommt, müssen folgende Schritte durchgeführt werden.
Für den Server :
- Öffnen einer Socket mit socket().
- Binden einer Socket an eine Socket-Adresse mit bind().
- Zulassen von Verbindungen an diese Socket mit listen().
- Warten auf eingehende Verbindungsanfragen vom Client mit accept().
- Datenaustausch mit dem Client.
- Schließen der Socket nach Beenden der Übertragung close().
Für den Client :
- Öffnen einer Socket mit socket().
- Verbindung mit dem Server aufnehmen mit connect().
- Datenaustausch mit dem Server.
- Schließen der Socket nach Beenden der Übertragung close().
Der Datenaustausch findet mit write() und read() statt.
1. Applet
Benutzer geführtes Applet zum Verbindungsaufbau und Kommunikation
zwischen einem Client und einem Server. Durch betaetigen der Buttons
im Steurungsbereich wird eine Verbindung aufgebaut.
2. Applet
Im Gegensatz zum ersten Applet ist der Verbindungsaufbau und
der Verbindungsabbau nicht Benutzer geführt sondern muß über
die Befehlseingabe erfolgen. Dazu müssen die Funktionen
mit vorgegebenen Variablennamen eingesetzt werden. Rückgabewert
braucht man nur anzugeben, wenn es sich um eine Socket handelt.
Für den Client :
Parameter- und Rückgabewerte :
- int socketnumber;
- int AF_INET;
- int SOCK_STREAM;
- struct sockaddr serveraddress;
- int lengthserveraddress = sizeof(serveraddress);
Funktionen :
- int socket(int type, int format, int protocol);
- int connect(int sd, struct sockaddr *address,int length);
- int close(int sd);
Beispiel :
Als Eingabe für die socket()-Funktion mit dem richtigen
Parameter und Rückgabewert :
socketnumber = socket(AF_INET,SOCK_STREAM,0);
Für den Server :
Parameter- und Rückgabewerte :
- int socketnumber;
- int socketchild;
- int AF_INET;
- int SOCK_STREAM;
- struct sockaddr serveraddress, clientaddress;
- int lengthclientaddress = sizeof(clientaddress);
- int lengthserveraddress = sizeof(serveraddress);
Funktionenen :
- int socket(int type, int format, int protocol);
- int bind(int sd, struct sockaddr *address, int length);
- int listen(int sd, int qlength);
- int accept(int sd, struct sockaddr *address, int *addrlen);
- int close(int sd);
Beispiel :
Als Eingabe für die bind()-Funktion mit dem richtigen
Parameter und Rückgabewert :
bind(socketnumber,&serveraddress,lengthserveraddress);
Siehe auch Beispiele.
3. Applet
Bei diesem Applet können zwei Clients Verbindung mit dem Server
aufnehmen.
CallSocketApplet1
CallSocketApplet2
CallSocketApplet3