Laboration 2: Ett kommunikationssystem



Relevanta dokument
Åtkomst och användarhandledning

Programmeringsuppgifter 1

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen

INSTALLATION AV VITEC MÄKLARSYSTEM. Studentversion

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

HexaFlip. Kravspecifikation

ZACI är den programvara som är navet i kommunikationen när det gäller kortbetalningar.

EDA095 Nätverksprogrammering

7 Mamut Client Manager

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Installation av. Vitec Online

MANUAL NETALERT FÖR ANDROID VERSION 3.3

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH

Så här inventerar du med Serveras inventeringswebb.

Piff och Puffs Chatsystem

Inspektion Användarmanuel

Distribuerade System, HT03

Datorsystem Laboration 2: Minnesmappade bussar


Att sätta upp en IPsec-förbindelse med mobil klient. Lisa Hallingström Paul Donald

RVS5000PC. Allmänt. RVS5000PC produktblad

Lära känna skrivbordet

Användarmanual CallPad och VoicePad

Objektorienterad programmering

Spelet i sig är inte avancerat men projektet ställer en del krav på implementationen bland annat:

Region Skåne Verksamhetsledningssystem (VLS)

ANVÄNDARMANUAL ANSLUTA TILL REGION HALLAND VIA CITRIX

Föreläsning 6: Introduktion av listor

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

1 Översikt. 1.1 Koncept 1 (19) Tomas Rook Dokument typ Rev. Manual

FileMaker. Köra FileMaker Pro 10 på Citrix Presentation Server

Skriv in sökvägen sam.sll.se

Användarmanual Pagero Connect 2.0

FileMaker Pro 13. Använda Fjärrskrivbord med

SAFE WORK. Instruktioner till personal - för dig som arbetar på ett entreprenadföretag

Objektorienterad programmering D2

Installationsanvisning för kursens programvara på egen dator

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Routerinställning. Denna guide tar dig genom de enkla steg som behövs för att ställa in routern så den fungerar trådlöst.

Klicka på en sökrad för att få fram hänvisningar, fullständig information och möjlighet att skicka meddelande via e-post eller sms.

Instruktioner för uppdatering från Ethiris 5.x till 6.0

QlikView - Lathund för Flödesmodellen bas

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Manual Sportident Onlinekontroll via GPRS

Projektrapport EDA095

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

MANUAL NETALERT FÖR IPHONE VERSION 1.0

Distribuerade system. CORBA eller RMI

Skapa ett register över din grupp/klass

Kontakt: Mikael Forsman Användarmanual för VIDAR 4.0

Beskrivning av hur du ansluter en E-terminal från Beijer Electronics till HC900 via Ethernet så att denna kan visa och manipulera data i HC900.

Projektarbete 2: Interaktiv prototyp

Användarinstruktioner Ofelia Återrapportering

FileCentral Desktop. Användarhandledning Version

Instruktioner för uppdatering från Ethiris 4.10 till 5.x

TDTS04: Ett chattsystem i java baserat på corba

En handledning för studerande på Högskolan Kristianstad

Smartair System. TS1000 Version 4.23

Nallelek Lärarvägledning

Användarhandbok OE/OSSpeaker V.10.3

Så här gör du för att lägga till nytt e-postkonto i Windows 8. Öppna E-post från startskärmen.

En guide till FirstClass

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

Uppdaterad Enkel manual tävlingsanmälan i friidrottens nya IT- system.

Patrik Calén

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Betatestning - Solsystem

ÅGIT PRESENTERAR FILR SMIDIG OCH SÄKER FILÅTKOMST OCH DELNING

Mer om Outlook. Extratexter till kapitel 4 Mejla. I avsnittet lär du dig: vad Outlook idag är och kan användas till

Linuxadministration I 1DV417 - Laboration 4 Nätverk, DHCP, säkerhetskopiering, processhantering, Samba och NFS

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Objektorienterad programmering

Bruksanvisning. Applikationsplats

Frågebanker, frågeuppsättningar och slumpvisa block

LABORATIONSRAPPORT Säkerhet och Sårbarhet Laboration 1 Brandväggar

CSN-rapportering, gymnasiet

Nulägesanalys & Kravspecifikation

Lathund för överföring av rapporter och ljudfiler

Komma igång med Eventor

för att uppdatera dina produkter dagligen på LeGuide.com Groups webbplatser

Svensk version. Inledning. Installation av maskinvara. Installation av Windows XP. LW057V2 Sweex trådlösa LAN PCI-kort 54 Mbps

Elmia Mässkatalog för PocketPC

Byta lösenord på en Ingate Firewall 1180/1190/SIParator 18/19. Lisa Hallingström Paul Donald Bogdan Musat Adnan Khalid

Hämta appar. Hämta appar innehåller information om vilka P&G-appar du behöver och hur du ställer in dem rätt.

Installation/Flytt av Rebus

RSI Road Status Information A new method for detection of road conditions

VIDA ADMIN LATHUND INNEHÅLL

Hjälpprotokoll till IP

Lumbago - Förord. Välkommen till Journalprogrammet Lumbago.

Appar eller mobilwebb? Vad är bäst för bibliotekets tjänster?

75059 Stort sorteringsset

Manual för deltagare kursen Bakgavellyft Så går du kursen Bakgavellyft

Space Invaders - Slutrapport

Hur BitTorrent fungerar

Grafisk referenshandbok

Transkript:

Laboration 2: Ett kommunikationssystem 1 Syfte Att arbeta ännu mer med OO-design och programmering, framför allt programmering mot gränssnitt. Undantag och felhantering. Parallellism 2 Uppgift Ni skall implementera ett litet kommunikationssystem bestående av en klientoch en server-applikation. Systemet kan hantera meddelanden (chat) och (enkel) löverföring mellan användare se gur. 3 Java RMI och Nätverk Vi kommer att använda Java:s Remote Method Invocation (RMI). RMI gör det möjligt att anropa metoder på objekt i andra JVM:er (potentiellt på andra maskiner). De exakta detaljer om hur RMI fungerar skall vi inte behöva bekymra oss om, i koden ser anropen ut som vanligt (förutom några speciella undantag) 1. I botten på RMI nns ett TCP/IP-nätverk. Vi måste alltså använda IPadresser och portar för att tala om vart objekt m.m. nns (Servern är ett objekt). För att förenkla kommer vi att simulera nätverket genom att använda den s.k. loopback adressen, IP-nummer 127.0.0.1 (kallas också localhost). Innebär att vi kan köra klienter och servern på samma dator. Se vidare Main.java (servern), TestServer.java (klienten) och lerna runserver.sh och runclient.sh i projektkatalogerna för respektive. OBS! Servern registrerar sig i RMI-registret och klienten söker rätt på servern i registret, klienten skall alltså inte registrera sig. 1 Förhoppningsvis...RMI har blivit mycket lättare att använda i Java >= 1.5. Se upp med gamla artiklar på nätet om; rmic, stubs, skelletons, e.t.c. Det mesta skall fungera utan att vi skall behöva göra något speciellt. 1

Figur 1: Två klienter 4 OO-Modellen Hela modellen är given och nns på server, se paketet core. 5 Funktionalitet 5.1 Klientapplikationen Klienten kan göra följande (se gur); Klienten kan ansluta sig till Servern (Connect). Då klienten är ansluten kan han/hon skicka meddelanden till andra anslutna klienter. Alla anslutna visas i listan till höger (Connected). Klienten kan koppla ner sig (Disconnect). Meddelanden skickas genom att man skriver något i det tomma textfältet och trycker Enter. Samtliga anslutna får meddelandet (broadcast). Då man dubbelklickar på någon ansluten i Connected-listan öppnas ett fönster som visar vilka ler man kan ladda ned från personen. Det som listas är lerna i katalogen upload i projektkatalogen. Om man markerar en l och klickar Download laddas len ner (direkt från den andra klienten). Nedladdade ler hamnar i katalogen download. Klientapplikationerna startas med s.k. skript, se runclient.sh och runclient2.sh (fungerar inte på Windows, isf får du skriva om till.bat ler). Eventuellt måste skripten göras exekverbara. Görs med (i terminalen); 2 Produced with Lyx, the open source wordprocessor

$ chmod u+x runclient.sh 5.2 Serverapplikationen Grundläggande server-funktionalitet (mer behövs, ingår i uppgiften att reda ut); Det nns några registrerade (hårdkodade) klienter i server. Dessa skall kunna logga in och logga ut. En klient måste kunna få direkt kontakt med en annan klient (kallas då Peer). Detta därför att all löverföring skall ske direkt mellan klienter (nns inga ler på servern). Kallas ofta peer2peer (P2P) nätverk. Servern saknar helt GUI. Det är lämpligt att låta servern logga allt som händer (skriva ut i terminalen), se kod. Även servern startas med ett skript, se runserver.sh 6 Systemarkitektur Server implementerar gränssnittet IChatServer (IServer i bilden) som används av klientapplikationen. Klienten implementerar IChatClient (IClient i bilden) som används av Servern. IPeer används mellan klienter vid lnedladdning. Samtliga gränssnitt extends Remote eftersom metodanropen sker med RMI. Samtliga metoder i gränssnitten måste ha throws RemoteExcerption. 7 Designmodell för Klienten En förenklad MVC modell där GUI-delarna direkt anropar Client-klassen. Klassen MainFrame implementerar gränssnittet IObserver för att kunna ta emot uppdateringar från Client, se kod. 3 Produced with Lyx, the open source wordprocessor

Main-klassen startar applikationen. Alla synliga delar av GUI:et är klara, men naturligtvis inte händelsehantering och notikationer från modell till GUI. All kod i paketet view. klassen Client i paketet client.client är implementationen av ett antal gränssnitt. Gränssnitten skall utformas enligt the interface segregation principle. Client kommer att använda State-mönstret, se vidare nedan. paketet io hanterar läsning och skrivning av ler. paketet exception innehåller en undantagsklass, används för att wrappa checked exceptions och för att höja abstraktionsnivån. paketet util innehåller hjälpklasser. Klienten kan vara i olika tillstånd. Utifrån detta skall klienten använda designmönstret State. Klienten byter alltså tillstånd genom att byta objekt (ändrar referens till annat objekt). Klassen StateContext håller reda på tillstånden (objekten) samt det aktuella tillståndet. RMI hanteringen skall ligga i tillståndsobjekten, inte i Client (klienten startar alltid i nedkopplat läge). 8 Designmodell för Servern Själva servern består bara av en enda klass service.server. All RMI-hantering sköts av denna klass, ingen RMI-kod i modellen. Main-klass används för att starta server (den är färdig). 9 Felhantering Systemet skall tåla att applikationer kraschar, t.ex. skall en klient kunna ansluta sig på nytt efter det att den kraschat. Ett knippe undantag (krascher simuleras med Ctrl c i terminalen man startade applikationen från): Klienten kraschar vad gör servern? Klient försöker ansluta till server som inte är igång. Klient skickar null-parameter till servermetod? Server kraschar, vad gör klienten? Koncentrera all felhantering på klientsidan till Client-klassen (för vidare transport till GUI:et). Skicka alla fel på lägre nivåer uppåt till Client. 4 Produced with Lyx, the open source wordprocessor

10 Parallellism Några punkter Detta är ett parallell system, era klienter kan samtidigt kontakta servern. Varje RMI-anrop skapar normalt en egen tråd! Se över så att servern är trådsäker. Om inkommande anrop på klientsidan skall vidare upp till GUI:et får man byta till Swing-tråden (allt i GUI:et skall ritas av denna). Man får alltså lämna över från en tråd till en annan. Tidskrävande operationer skall köras i egna trådar använd Swing worker för lnerladdning. Servern bör med jämna mellanrum kontrollera om någon klient kraschat. Kontrollen skall köras i en egen tråd. Använd högnivåtrådning, SwingWorker och TimerTask och liknande inte klassen Thread! 11 Filöverföring Filöverföring sker som sagt direkt mellan klienter. All lhantering på låg nivå är klar, se paketet client.io och klassen ChatFile. 12 Övergripande process Det nns NetBeans-project att ladda ner, ett för klient och ett för server. Båda är körbara. 1. Testa att starta server och klienter m.h.a. skripten. Öppna en terminal för varje skript. För att starta servern skriver man: $./runserver.sh 2. En metod, ping, är implementerad i servern. Det nns en test i klienten som anropar metoden. Starta servern och kör testet för att, om möjligt, få en första kontakt mellan klient och server. 3. Implementera preliminära versioner an någon metod i serverns interface. Testa! OBS! Tanken är att ni i fortsättningen själva skall hitta de metoder som behöves i respektive gränssnitt. 4. Gör en tillfällig version av klienten (Client) som använder RMI för att anropa server (RMI koden skall senare yttas till de olika tillståndsklasserna). Målet är att få ett anrop att gå hela vägen från klient-gui:et till Servern. 5 Produced with Lyx, the open source wordprocessor

5. Fundera på vad servern måste kunna göra med klienten. Implementera därefter en metod som går hela varvet, från klient-gui, till Client, till server och tillbaks till klient-gui. 6. Lägg till State mönstret för klienten. 7. Lägg till er metoder. 8. Kontrollera felhantering och parallellism. 9. Implementera löverföringen. 13 Redovisning Som tidigare labbar. Inlämningsdatum Se kurssida. 6 Produced with Lyx, the open source wordprocessor