Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Java News & Music Der Chat
Aktuellste Version |Stephan __25_06 stephan volgmann | rafael nenna | andre berning
2
Inhalt Ziele und Anforderungen Aufgabenstellung Der Server - Klasse
| Java News & Music | Ziele und Anforderungen Aufgabenstellung Der Server - Klasse Das Chatplugin Die Ein- Ausgabeströme der Nachrichten Simulation des Chats Installation
3
Ziele & Anforderungen Attraktivitätssteigerung von Java News & Music
Austausch von Nachrichten & Informationen Der Chat als kommunikatives Forum & Treffpunkt
4
Aufgabenstellung | Java News & Music | Ein Java Chat im Rahmen der Projektarbeit Java News & Music Aufgabenverteilung: Der Server Andre Berning Das Chatplugin als Applet Rafael Nenna Die Ein-/Ausgabeströme Stephan Volgmann
5
Die Klasse mainmanager – Der Server
| Java News & Music | Die Klasse mainmanager – Der Server Warum ein eigener Server ? Aufgaben des Servers Funktionsweise der Klasse mainmanager ---Grundlagen der Klasse erläutern
6
Die Klasse mainmanager - Warum ?
| Java News & Music | Die Klasse mainmanager - Warum ? Applets können untereinander aufgrund der Java Sicherheitsbeschränkungen schlecht kommunizieren ! -Betonung auf Sicherheitsbeschränkungen von Java Applets -Jeder der will kann sich die Klassen auf seinem Webserver installieren oder im privaten Netzwerk Nicht abhängig von Java News and Music, obwohl hierfür entwickelt
7
Die Klasse mainmanager - Aufgaben
| Java News & Music | Die Klasse mainmanager - Aufgaben Aufbau der Sockets und Verwaltung der einzelnen Chatteilnehmer Senden der Nachrichten an alle User Zuweisung des Usernamens anhand der IP-Adresse
8
Die Klasse mainmanager - Sockets & User
| Java News & Music | Die Klasse mainmanager - Sockets & User Aufbau eines ServerSockets am Port 5666: try { wait = new ServerSocket(PORT); } catch (IOException e) {...} Anschließend dauerhafte Überwachung des Ports durch einen Thread In der run-Methode des Threads wird Client Verbindung akzeptiert und in einem gemeinsamen Vector „gespeichert“: public void run(){ try { while(true) { Socket client=wait.accept(); usermanager newbie = new usermanager(this, client); users.addElement(newbie); } } catch (IOException e) { ... }
9
Die Klasse mainmanager - Sockets & User
| Java News & Music | Die Klasse mainmanager - Sockets & User -Was passiert bei einer Verbindungsaufnahme? public void run(){ try { while(true) { Socket client=wait.accept(); usermanager newbie = new usermanager(this, client); users.addElement(newbie); } } catch (IOException e) { ... } *bei jeder eingehenden Verbindung wird ein neues Objekt der Klasse usermanager erzeugt -dem Objekt newbie werden zwei Parameter übergeben: this (also das Objekt „newbie“) Client-(also ein Socket) -die Weiterverarbeitung erfolgt in der Klasse userrmanager
10
Die Klasse mainmanager – Das Senden
| Java News & Music | Die Klasse mainmanager – Das Senden Wie sendet mainmanager die Nachricht an alle Chatter? public void allmembers(String msg ){ int i; usermanager single; for (i=0; i<users.size(); i++) {... somit erreicht man alle Clients. Die Nachricht besteht aus mehreren Teilen: ... single.output.println(this.username+" ["+Zeit+"]"+ message ); Da alle Verbindungen in einem Vector liegen, kann man diese nacheinander durchgehen und die Nachricht an alle versenden, dies geschieht in der Methode allmembers: -message wird direkt vom usermanager an mainmanager übergeben -Zeit wird von der Klasse time erzeugt -Username wird von der Methode filesearch erzeugt
11
Die Klasse mainmanager - Die Usernamen
| Java News & Music | Die Klasse mainmanager - Die Usernamen Nickname oder Username? Wie Username ? adress = file.substring( file.indexOf(""), file.indexOf("_") ); username = file.substring( file.indexOf("_")+1, file.lastIndexOf("_") ); if (adress.equals(ipadress)) { this.username = username; ..... *obwohl eine Lösung mit einem Nickname in den meisten Chats verwendet wird, wird hier ein Username anhand der IP Adresse eines Users ermittelt Dieses wurde in der Methode filesearch erledigt: * Mit Hilfe eines Arrays bestehend aus den Dateinamen des „user“ Verzeichnisses und einer Schleife werden alle IP Adressen der Dateinamen mit der IP Adresse des Clients verglichen. Stimmen Sie überein, wird der Username zugewiesen Anschliessend kann der Username dann mit der Nachricht zusammen gesendet werden.
12
Die Klasse mainmanager - Die Zeitausgabe
| Java News & Music | Die Klasse mainmanager - Die Zeitausgabe In unserem Chat werden zwei Zeitausgaben generiert Die Startzeit des Servers (siehe nächste Folie) Bei jeder Nachricht wird die aktuelle Zeit eingefügt - Die Zeit in der Nachricht soll den anderen Chatnutzern einen Hinweis darauf geben, wann ein User das letzte Mal einen Kommentar geschrieben hat. Somit kann man verfolgen, ob jemand aktiv am Chat teilnimmt, oder nur „Zuhörer“ ist. - Die Startzeit der Klasse mainmanager und somit die Startzeit des Servers ist ein Hinweis für den Betreiber des Chats
13
Das Chatplugin - Realisierung
| Java News & Music | Das Chatplugin - Realisierung Aufgaben Anforderung Realisierung
14
Das Chatplugin - Layout
| Java News & Music | Das Chatplugin - Layout Anforderungen Probleme GridBagLayout
15
Das Chatplugin – Screenshots Layout
| Java News & Music | Das Chatplugin – Screenshots Layout 022 public void init() 023 024 { 025 026 GridBagLayout gbl = new GridBagLayout(); 027 this.setLayout(gbl); 028 this.setBackground(Color.lightGray); 029 030 GridBagConstraints c = new GridBagConstraints(); 031 c.fill = GridBagConstraints.BOTH; 032 c.insets = new Insets(4,4,4,4); 033 034 outputarea = new TextArea 035 ("",23,1,outputarea.SCROLLBARS_VERTICAL_ONLY ); 036 chatInput = new TextField("Ihre Nachricht",40); 0 / 0 1 / 0 0 / 1 1 / 1
16
Das Chatplugin – Screenshots Layout
| Java News & Music | Das Chatplugin – Screenshots Layout 0 / 0 1 / 0 040 //TextArea outputarea 041 c.gridx = 0; 042 c.gridy = 0; 043 c.gridwidth = 2; 044 gbl.setConstraints(outputarea, c); 045 add(outputarea); 046 outputarea.setEditable(false); 0 / 1 1 / 1
17
Das Chatplugin- Die Kommunikation
| Java News & Music | Socketverbindung = IP des Hosts + Portnummer Problem
18
Das Chatplugin – Ermittlung der IP
| Java News & Music | 067 public void start() 068 { 069 try 070 { 071 URL myURL = this.getCodeBase(); 072 String myHostIP = myURL.getHost(); 073 mysocket = new Socket(myHostIP, PORT);
19
Das Chatplugin - Ablauf
| Java News & Music | Einstieg in den Chat init() start()
20
Das Chatplugin – Thread
| Java News & Music | 067 public void start() 068 { ... 089 if (mythread == null) 090 { 091 mythread = new Thread(this); 092 mythread.setPriority(Thread.MIN_PRIORITY); 093 mythread.start(); 094 } 095 }
21
Das Chatplugin - Texteingabe
| Java News & Music | Benutzer „Rudi“ gibt Nachricht ein: „Hello World“ Drücken der send-Schaltfläche oder der Enter-Taste
22
Das Chatplugin – Eventhandling
| Java News & Music | PrintStream outline; 166 public void actionPerformed(ActionEvent e) 167 { 168 String theText = chatInput.getText(); 169 outline.println(theText); 170 chatInput.setText(""); 171 } 172 173 public void keyPressed (KeyEvent e) 174 { 175 if (e.getKeyCode()==KeyEvent.VK_ENTER) 176 { 177 String theText = chatInput.getText(); 178 outline.println(theText); 179 chatInput.setText(""); 180 } 181 182 }
23
Das Chatplugin – PrintStream
| Java News & Music | PrintStream outline; „Hello World“ manmanager.class usermanager.class chatplugin.class time.class
24
Das Chatplugin - Lauschen
| Java News & Music | Socketverbindung auf Port 5666 chatplugin.class
25
Das Chatplugin - Lesen BufferedReader inputline;
| Java News & Music | BufferedReader inputline; 144 while(true) 145 { 146 line = inputline.readLine(); 147 if(line!=null) 148 outputarea.append(line+'\n' ); 149 } chatplugin.class
26
Das Chatplugin - Thread
| Java News & Music | 098 public void stop() 099 { 100 try 101 { 102 mysocket.close(); 103 } 104 …. ……. 109 110 if ((mythread !=null) && mythread.isAlive()) 111 { 112 mythread.interrupt(); 113 mythread = null; 114 } 115 } 136 public void run() 137 { 138 while(mythread.isInterrupted() == false) 139 ….
27
Das Chatplugin - Ablauf
| Java News & Music |
28
Das Chatplugin - Ablauf
| Java News & Music |
29
Das Chatplugin - Ablauf
| Java News & Music |
30
Das Chatplugin - Ablauf
| Java News & Music |
31
Die Verbindungen – Die Klasse usermanager
| Java News & Music | Die Funktionen im Überblick: Zuständig für Verbindungen zwischen den User Übernimmt die vom Server übergebenen Verbindungen Baut einen DataInputStream u. PrintStream auf Schickt die Nachrichten an den Mainmanager zur Methode „allmembers“ zurück Ermittelt die IP- Adresse der User und übergibt sie der Methode „filesearch“ in der Klasse mainmanager
32
Die Verbindungen – Die Klasse usermanager
| Java News & Music | Anfrage Übergabe der Verbindungen Aufbau der Ein / Ausgabe- Ströme
33
Die Verbindungen – Die Klasse usermanager
| Java News & Music | UML - Diagramm
34
Die Verbindungen – Die Klasse usermanager
| Java News & Music | Importieren der verwendeten Pakete Socket- Verbindung DataInputStream PrintStream Übergabe der Verbindungen vom Server
35
Die Verbindungen – Die Klasse usermanager
| Java News & Music | Aufbau der Ein- und Ausgabeströme Ermitteln der IP
36
Die Verbindungen – Die Klasse usermanager
| Java News & Music | Rückgabe der Chat- Nachrichten an die Methode allmembers Rückgabe der IP- Adresse
37
Die Klasse Time Generierung der aktuellen Serverzeit
| Java News & Music | Generierung der aktuellen Serverzeit Rückgabe der Uhrzeit an die Klasse mainmanager
38
Die Simulation – Eine Nachricht im Chat
| Java News & Music | mainmanager.class starten auf Verbindung warten Lauschen auf Nachricht von Chatter usermanager erhält Socketverbindung Lesen der Nachricht Ermitteln der IP Weitergabe an Chatter Benutzername + Zeit + Nachricht Zuweisung des Benutzer- namens
39
Die Simulation – Eine Nachricht im Chat
| Java News & Music |
40
How To Use – Die Installation
| Java News & Music | Grundlagen Die Klasse mainmanager muss im gleichen Verzeichnis liegen wie chatplugin und usermanager Über eine Konsole kann man den Server mit: java mainmanager starten Ist der Server gestartet, wird die schon erwähnte Startzeit ausgegeben
41
Der Chat – Projektarbeit 2003
| Java News & Music | stephan volgmann | rafael nenna | andre berning
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.