Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java News & Music Der Chat

Ähnliche Präsentationen


Präsentation zum Thema: "Java News & Music Der Chat"—  Präsentation transkript:

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


Herunterladen ppt "Java News & Music Der Chat"

Ähnliche Präsentationen


Google-Anzeigen