Projekt i Nätverksprogrammering MegaNet 2000 Handledare: Pierre Nugues Gruppmedlemmar: Christofer Bach (dt05cb6) Daniel Eldrup (dt05de1) Manfred Dellkrantz (dt05md6) Maxim Machalek (cim04mm6)
Bakgrund Denna uppgift går ut på att ett chatprogram ska utvecklas. Det innebär att vi skapar en serverdel samt en klientdel där serversidan består av ett grupprum med klienter. Denna sida ska hålla reda på alla klienter samt att alla kommandon från klienterna utförs. Det är viktigt att servern håller alla kommandon/meddelanden synkroniserade. Kravspecifikation Följande krav hade vi på programmet innan vi började utveckla: Ett användargränssnitt integrerat i klientdelen så att man kan se användarlistan, alla meddelanden som skickas samt själv kunna skicka kommandon (se nedan för vilka kommandon som skall finnas tillgängliga). Implementera så att en filöverföring mellan två användare är möjlig. En serverdel som fungerar som ett grupprum för användarna. Här ska kommandon kunna tas emot av klienterna. Tillgängliga kommandon: 1. Användare ansluter 2. Användare stänger anslutningen 3. Namnbyte på användare 4. Uppdatering av användarlistan 5. Filöverföring mellan två användare 6. Meddelande skickas till samtliga användare Modell Nätverkstekniken som används är TCP då vi inte vill riskera att förlora något viktigt meddelande. Det finns en server som väntar på att ett antal klienter skall ansluta och lägger dem till en lista. All kommunikation går via servern. Servern skickar ett meddelande till alla när en klient kopplar sig mot servern eller när en klient stänger Chat-programmet. Klienten har bara möjlighet att skicka meddelandet till alla(för tillfället). Klienten skickar en begäran till servern angående en fil ska skickas. När servern bekräftar detta uppstår filöverföringen. Genom att användare skapar en förbindelse mellan sig. Paket client: Client ClientReader (tråd) FileClient (tråd) FileServer (tråd) Mainmetod som skapar ett användargränssnitt till klienten. Ansluter klienten och lyssnar efter meddelanden från servern. Skickar även egna kommandon. Används av den som tar emot en fil. Används av den som skickar en fil. En TCP-förbindelse skapas då detta sker. Paket gui: MiniChat (tråd) UserGUI (tråd) Skapar en ruta med privatchat (OBS! Ej integrerat i systemet) Användargränssnitt till klienterna (skapas i client-paketet)
Paket protokol: Message Definierar samtliga kommandon. Skapar ett String-objekt som skall skrivas ut. Paket server: Chatter ClientThread Mailbox MyServer ReaderThread Definierar en användare på serversidan. Väntar in och hanterar kommandon från chatters Main-metoden som skapar en server. Håller koll och uppdaterar användarlistan. Utvärdering Samtliga godkänd-krav blev uppfyllda med vår implementation av chatprogrammet. Vissa delar kan finslipas som exempelvis filöverföringen. När ett filöverföringskommando skickas kan mottagaren bara titta på när filen tas emot, d.v.s. denne kan inte neka filöverföringen och inte heller var filen ska läggas. Det är detaljer som står utanför själva kursen och inget i vår kravspecifikation indikerade på att det skulle implementeras. Användarhandledning Starta programmet 1. Ladda ner programfilerna från menyn Filer 2. Starta sedan servern genom att skriva java -jar Server.jar i en kommandoprompt 3. Starta klienter genom att skriva java -jar Client.jar i en kommandoprompt Ansulta till Server 1. Skriv in IP-nummer i ruten med texten Enter message here 2. Tryck på Connect knappen
Skicka ett meddelande till alla användare 3. Knappa in ditt meddelande 4. Tryck på Send knappen Skicka en fil till en enskild klient 1. Välj ett namn från vänlistan 2. Klick på File Transfer knappen 3. Ett fönster dyker upp. Där du kan bläddra efter fil. 4. Klicka på Ok knappen Ansulta till annan Server
1. Tryck på Disconnect knappen 2. Skriv in IP-nummer i ruten som hade texten Enter message here 3. Tryck på Connect knappen Bytta nick 1. Skriv in nytt Nick i Nick rutan 2. Tryck på Enter knappen Utvärdering Uppgiften var lagom stort och lagom utmanande. Det var positivt att man själv fick bestämma projektets ram. Vidare var det uppskattat att man fick styra själv projektets storlek. Veckomötena med små deadline var väldigt effektivt för att kunna genomföra kravet. Tack vare våra föreläsningar och labbar ställde själva kärnan av problemet, klientserver hantering inte stora problem.