Java 2 Útikalauz programozóknak 5.0

elte.java2_utikalauz5.chat
RMIChatServer osztály

java.lang.Object
  extended by java.rmi.server.RemoteObject
      extended by java.rmi.server.RemoteServer
          extended by java.rmi.server.UnicastRemoteObject
              extended by elte.java2_utikalauz5.chat.RMIChatServer
Megvalósított interfészek:
RMIChatServerIf, Serializable, Remote

public class RMIChatServer
extends UnicastRemoteObject
implements RMIChatServerIf

Java Chat Program - Szerveroldal implementációja. Használatakor ne feledjünk el a következő jogokat megadni!

grant signedBy "utikalauz" {
  permission java.net.SocketPermission "localhost", "connect,accept";
};

Mióta:
Java 2 Útikalauz programozóknak 1.3
Lásd még:
Szerializált forma
Forrásfájl:
RMIChatServer.java
Letöltés:
RMIChatServer.jar

Mezők
(package private)  Hashtable<String,RMIChatClientIf> resztvevok
           
private static long serialVersionUID
          Verziószám.
 
java.rmi.server.RemoteObject osztálytól örökölt mezők
ref
 
Konstruktorok
RMIChatServer()
           
 
Metódusok
private  Hashtable<String,RMIChatClientIf> belepesErtesites(String nev)
          Az összes résztvevőnek eljuttat egy "XY belépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.
private  Hashtable<String,RMIChatClientIf> kibelepesErtesites(String nev, boolean ki_e)
          Az összes résztvevőnek eljuttat egy "XY belépett/kilépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.
private  Hashtable<String,RMIChatClientIf> kilepesErtesites(String nev)
          Az összes résztvevőnek eljuttat egy "XY kilépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.
private  void kirug(String nev, String ki_rugta_ki)
          A második paraméterben megadott nevű csetelő kirúgta az első paraméterben megadott nevű társát.
static void main(String[] args)
          A szerver főprogramja Létrehozzuk a szerverobjektumot, bejegyezzük a registrybe.
 Hashtable nevlistaSzinkronizalas()
          A kliensek itt kérhetik le az aktuális névlistát, ha azt az aktuális állapotra akarják hozni.
private  Hashtable resztvevokErtesitese(String nev, String uzenet)
          Az összes résztvevőnek eljuttat egy (nem üres) üzenetet
 void RIP(Hashtable kiesettek)
          Kitörli a résztvevők névsorából a paraméterben megadott (elérhetetlennek vélt) klienseket.
 void tarsBelepes(String nev, RMIChatClientIf Kli)
          A szerver ezen a metódusán kapja egy újonnan belépő klienstől annak becenevét és kliensoldali kommunikációs végpontjának távoli referenciáját (ezen keresztül hívhatja vissza a klienst, ha erre szükség van)
 void tarsKilepes(String nev)
          A szerver ezen a metódusán kapja egy kilépő klienstől annak becenevét.
 int uzenetFogadas(String nev, String szoveg)
          A szerver ezen a metódusán kapja a kliensektől az ott beírt sorokat ...
 
java.rmi.server.UnicastRemoteObject osztálytól örökölt metódusok
clone, exportObject, exportObject, exportObject, unexportObject
 
java.rmi.server.RemoteServer osztálytól örökölt metódusok
getClientHost, getLog, setLog
 
java.rmi.server.RemoteObject osztálytól örökölt metódusok
equals, getRef, hashCode, toString, toStub
 
java.lang.Object osztálytól örökölt metódusok
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Mezők részletezése

serialVersionUID

private static final long serialVersionUID
Verziószám.

Lásd még:
Konstans mezőértékek

resztvevok

Hashtable<String,RMIChatClientIf> resztvevok
Konstruktorok részletezése

RMIChatServer

public RMIChatServer()
              throws RemoteException
Specifikált kivételek:
RemoteException
Metódusok részletezése

resztvevokErtesitese

private Hashtable resztvevokErtesitese(String nev,
                                       String uzenet)
Az összes résztvevőnek eljuttat egy (nem üres) üzenetet


kibelepesErtesites

private Hashtable<String,RMIChatClientIf> kibelepesErtesites(String nev,
                                                             boolean ki_e)
Az összes résztvevőnek eljuttat egy "XY belépett/kilépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.


kilepesErtesites

private Hashtable<String,RMIChatClientIf> kilepesErtesites(String nev)
Az összes résztvevőnek eljuttat egy "XY kilépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.


belepesErtesites

private Hashtable<String,RMIChatClientIf> belepesErtesites(String nev)
Az összes résztvevőnek eljuttat egy "XY belépett" üzenetet Itt az üzenet kiírása mellett a kliensoldali társak listájának aktualizálása fontos, ebben különbözik a normál kiíró metódustól.


RIP

public void RIP(Hashtable kiesettek)
Kitörli a résztvevők névsorából a paraméterben megadott (elérhetetlennek vélt) klienseket. A kiesettnek véltek már ki vannak véve a résztvevők közül, így az értesítés csak az aktív klienseknek lesz elküldve. Ha közben - az értesítések során - valaki kiesne ... akkor újból teszünk egy kört ... (végesség oka: rekurzív meghívás során a résztvevők száma csökken - végtelen ciklus e rekurzióból nem lehet).


kirug

private void kirug(String nev,
                   String ki_rugta_ki)
A második paraméterben megadott nevű csetelő kirúgta az első paraméterben megadott nevű társát. Ha létezik a kirúgott nevű csetes, kitesszük a csetből és értesítjük a többieket. Megj.: jelenleg mindenki rúgdoshat - ide lehetne beírni például olyan ellenőrzést, hogy csak bizonyos nevű csetesek rúghatnak ki másokat. Mivel ez nem bonyolult algoritmus (milyen nevet adtunk az "if" utasításnak :-) ), és nem csetspecifikus, ezért itt most ilyent nem csinálunk.


uzenetFogadas

public int uzenetFogadas(String nev,
                         String szoveg)
                  throws RemoteException
RMIChatServerIf interfészből átvett leírás:
A szerver ezen a metódusán kapja a kliensektől az ott beírt sorokat ... Visszaadja a résztvevők számát (névlista szinkronizációjára).

Megvalósítja:
RMIChatServerIf interfész uzenetFogadas metódusát
Specifikált kivételek:
RemoteException

nevlistaSzinkronizalas

public Hashtable nevlistaSzinkronizalas()
                                 throws RemoteException
RMIChatServerIf interfészből átvett leírás:
A kliensek itt kérhetik le az aktuális névlistát, ha azt az aktuális állapotra akarják hozni. A hashtáblában kulcsként vannak a résztvevők nevei, hozzá tárolt objektumok: nincs definiálva

Megvalósítja:
RMIChatServerIf interfész nevlistaSzinkronizalas metódusát
Specifikált kivételek:
RemoteException

tarsBelepes

public void tarsBelepes(String nev,
                        RMIChatClientIf Kli)
                 throws RemoteException
RMIChatServerIf interfészből átvett leírás:
A szerver ezen a metódusán kapja egy újonnan belépő klienstől annak becenevét és kliensoldali kommunikációs végpontjának távoli referenciáját (ezen keresztül hívhatja vissza a klienst, ha erre szükség van)

Megvalósítja:
RMIChatServerIf interfész tarsBelepes metódusát
Specifikált kivételek:
RemoteException

tarsKilepes

public void tarsKilepes(String nev)
                 throws RemoteException
RMIChatServerIf interfészből átvett leírás:
A szerver ezen a metódusán kapja egy kilépő klienstől annak becenevét.

Megvalósítja:
RMIChatServerIf interfész tarsKilepes metódusát
Specifikált kivételek:
RemoteException

main

public static void main(String[] args)
A szerver főprogramja Létrehozzuk a szerverobjektumot, bejegyezzük a registrybe. A többi már csak a kliensek ... azaz a csetelők feladata ...


Java 2 Útikalauz programozóknak 5.0