Osztott rendszerek beadandó

A fájlok általános szervezéséről

A feladat két részből áll, mindegyik részhez elérhető egy parancssorból futtatható és egy Eclipse-es tesztelő.

Feltételek

Parancssorból indítva a tesztelő elvárt kimenete:

===============================================
1. feladat
===============================================
JUnit version 4.12
.Nem megfelelo a jatekosok szama.
.....Nem megfelelo a jatekosok szama.
.
Time: 0,814

OK (7 tests)

===============================================
2. feladat
===============================================
JUnit version 4.12
..
Time: 0,817

OK (2 tests)

1. rész: Kliens-szerver

Készítsd el a dominó játék egy változatát. Socketekkel valósítsd meg, melyek szöveges üzenetekkel kommunikálnak egymással. Az osztályokat a domino csomagba tedd.

Kliens: (DominoClient.java)

Az első parancssori paraméterként meg kell adni a felhasználó nevét, a későbbiekben ezt használjuk az azonosítására. A DominoClient csatlakozzon a 60504 porton futó DominoServer osztályhoz. A szerver kezdetben 7 dominót küld a kliensnek egy-egy sorban, aki ezekkel fog játszani. A dominókat szóközzel elválasztott két szám ábrázolja, az egyik és a másik oldalán lévő szám. A kliens elküldi a szervernek a nevét.

Ha ez a kliens kezd:

Ha egy másik kliens kezd:

A kliens minden alkalommal írja ki a képernyőre a kapott üzenetet és az általa elküldött üzenetet. Egy üzenet - válasz páros egy sorba kerüljön. A kiírás formája a következő legyen: <Játékosnév>: <kapott üzenet> <küldött üzenet>. Abban az esetben, ha a kliens nem küld üzenetet (pl. új dominó kérésére kapott válasz), akkor a kiírásnál elhagyható a <küldött üzenet> rész. A kliens hozzon létre egy fájlt a nevével megegyező néven txt kiterjesztéssel (pl.: Jatekos1.txt). Minden üzenetet, amit a képernyőre kiír, írja bele a fájlba is.

Szerver: (DominoServer.java)

A programnak parancssori paraméterként meg kell adni egy számot (n) és egy fájlnevet.

A paraméterként adott szám (n) határozza meg, hogy hányan játszanak egy játékot. A játékosok száma 2 és 4 között lehet, ellenőrizd a megkapott számot, hogy ebbe az intervallumba esik-e. Ha nem, írja ki a program, hogy Nem megfelelo a jatekosok szama. és ekkor az alapértelmezett érték 2 játékos legyen.

A fájl tartalmazza a dominókat a következő alakban: egy sorban egy dominó két felén található szám van szóközzel elválasztva. A szervert sockettel valósítsd meg a 60504 porton. A szerver egyszerre egy játékmenet futtat le teljesen, majd véget ér.

Amikor mindegyik kliens csatlakozott, a szerver kezdje meg a játékot.

A játék menete:

A szerver minden lépésnél írja ki a parancssorban megkapott nevű fájlba, hogy milyen üzenetet kapott a kliensektől. Erre minta a _mo.txt fájlokban látható.

Szorgalmi: interaktív kliens (DominoPlayer.java):

Készíts egy DominoPlayer osztályt, ami a felhasználótól várja az utasításokat. A működése legyen hasonló a DominoClient osztályhoz a következő módosításokkal:

2. rész: RMI

Készítsd el a domino.server.DominoStorageImpl osztályt, amely a DominoStorageIface interfésszel leírt szolgáltatást valósítja meg. Az osztály a UnicastRemoteObject leszármazottja.

Készítsd el a domino.server.DominoDeploy osztályt.

Készítsd el a domino.DominoClient2 osztályt. Ez a fent leírt DominoClient programhoz hasonló működésű, az alábbiakban tér el tőle.