![]() |
![]() ![]() die führende deutsche Java-Seite ![]() ![]() und Hannes Gamperl ![]() |
![]()
|
![]() Einführung
Workshops
Wissen
Ressourcen
K&K Intern
Weitere Angebote
EMail an java@acc.de
|
Die mit den Streams beschriebene Lösung bietet zwar eine Möglichkeit zur Kommunikation (es werden Daten von einer Stelle zur anderen übertragen), es findet jedoch keine Interaktion, also der Austausch von Daten, statt. Zwar könnte man auch einen Ausgabestream zu einer bestimmten URL öffnen, hinter der sich dann ein CGI-Programm verbirgt, das die Daten entgegennimmt - das dem Internet zugrunde liegende Übertragungsprotokoll TCP/IP bietet für Zweiwegekommunikation jedoch eine bessere Möglichkeit: Sockets. Eine der Eigenschaften des TCP/IP-Protokolls ist, dass die Daten, in Paketen verpackt, hin- und hergeschickt werden. Damit diese Datenpakete nun den richtigen Empfänger erreichen, wird jedem Paket eine sog. IP-Adresse zugeordnet. Im Internet besitzt jeder Server eine eigene IP-Adresse, mittels derer man jeden beliebigen Server weltweit eindeutig ansprechen kann. Stellen Sie sich vor, auf diesem Rechner sind, wie z.B. unter UNIX üblich, mehrere User zu Gange und haben sich über das Internet in andere Rechner eingewählt und verrichten dort verschiedene Sachen. Aber auch ein einziger Benutzer kann ja verschiedene Verbindungen zu verschiedenen Servern gleichzeitig aufbauen. Damit sich diese Verbindungen nun nicht gegenseitig in die Quere kommen wird jedem Datenpaket eine weitere Nummer, die sog. Port-Nummer mitgegeben. Anhand dieser Portnummer kann nun jedes Datenpaket genau dem Programm zugeordnet werden, das diese Verbindung nutzt. Diese Kombination aus Internet-Adresse und Port nennt man eben Sockets.
Einige dieser Ports sind reservierte, standardisierte Ports, die bestimmten Netzdiensten zugeordnet sind, z.B. besitzt Telnet die Portnummer 23 und das WWW die 80. Alle Portnummern unter 256 sind für diese Standarddienste reserviert. Zwischen 256 und 1024 befinden sich UNIX-spezifische Dienste wie z.B. rlogin. Mithilfe der Sockets wollen wir nun im folgenden das Chat-System programmieren, das es Nutzern, die ein bestimmtes Java-Applet geladen haben, erlaubt, sich miteinander zu unterhalten (engl. "to chat" = schwatzen).
Da die Applets sich aufgrund der Sicherheitsbeschränkungen nicht direkt miteinander verbinden dürfen und ja vor allem auch erstmal nichts voneinander wissen, ist das Chat-System nach dem Client/Server-Prinzip aufgebaut: Auf einem Hauptrechner, dem Server, wird eine Applikation gestartet die laufend auf eingehende Verbindungen wartet. Auf diesem Rechner muss auch die HTML-Seite liegen, die das Chat-Applet enthält, folglich muss dort auch ein WWW-Server installiert sein. Wird die HTML-Seite von einem anderen Rechner, dem Client, geladen, startet dort das Applet und verbindet sich mit dem Server. Alle Eingaben werden an den Server geschickt, der diese wiederum an alle anderen, die sich mit ihm verbunden haben weiterleitet. Der Server fungiert also als eine Art Vermittler zwischen den Clients.
Insgesamt besteht das komplette Chat-System aus 3 Klassen: Dem Chat-Server, der auf dem Internet-Server als Applikation gestartet werden muss und auf eingehende Verbindungen von etwaigen Clients wartet, der Connection-Klasse, die diese Verbindungen dann übernimmt und den Datenaustausch mit den Clients regelt und schliesslich dem Client selbst, dem Chat-Applet, das im Browser des Nutzers läuft. ![]()
| |||||
Nach oben |
© 1998 Christoph Bergmann / ACCESS Internet. Alle Rechte vorbehalten. |