Projektrapport. MegaLoad. Nätverksprogrammering EDA

Relevanta dokument
PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

F8 Meddelandesändning med UDP

Transport Layer. Transport Layer. F9 Meddelandesändning med UDP EDA095 Nätverksprogrammering. Java och UDP TCP/UDP

Piff och Puffs Chatsystem

Nätverksprogrammering, EDA095

Handhavande manual problemhantering

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

Åtkomst och användarhandledning

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Tentamen Nätverksprogrammering Lösningsförslag

F9 Meddelandesändning med UDP

Installation och setup av Net-controller AXCARD DS-202

OBS!!! Anslut ej USB kabeln till dator eller GPS innan du först har installerat drivrutinerna för USB kabeln i din dator.

FIRSTCLASS. Innehåll:

SNABBGUIDE för Windows Media Encoder (media kodaren) - Sänd live med din webbkamera

TCP/IP och Internetadressering

Administrationsmanual ImageBank 2

Snabbguide Överföring av resultat till PC. systemsure Plus

Installera nedladdningsterminal

Webservice & ERP-Integration Rapport

LectureMopp - Projekt i Nätverksprogrammering

Hur man ändrar från statisk till automatisk tilldelning av IP i routern.

Din guide till. Klientinstallation MS Driftservice

Manual licenserver. Installations och konfigurations-manual för Adtollo licenserver

Installation av. Vitec Online

Projektrapport EDA095

INNEHÅLLS FÖRTECKNING

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Inlämningsuppgift 11e Nätvärksskrivare

Laboration 2: Ett kommunikationssystem

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Instruktion för installation av etikettskrivare 2.27

INSTALLATION AV KLIENT

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Kom igång med Etikettskrivaren 1. Ladda ner följande installationsprogram Ladda ner Drivrutiner för etikettskrivare Zebra

Så här hanterar du din OneDrive i Office 365

10 Kommunikation i Java

Ladda upp filer fra n PLC till PC

Datainsamling över Internet

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

INSTALLATION AV KLIENT

Migrera från KI Box till KI Cloud

Användarhandledning för RSV:s Elektroniska brevlåda

Detta beror på att SuperOffice applikationen inte kommer åt någon av de tre komponenterna som krävs för att kunna logga in.

Tentamen Nätverksprogrammering Lösningsförslag

Skärmbilden i Netscape Navigator

INSTALLATION AV KLIENT

Innan installationen behöver dessa tre steg genomföras. Efter installationen kan de aktiveras igen.

JobOffice SQL databas på server

Instruktion för klienten Djupkarta.se

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

GUIDE Ansökan planmässigt anstånd

Gränssnitt för FakeGranska. Lars Mattsson

FileCentral Desktop. Användarhandledning Version

Office 365 MB. Innehåll. Inledning / Inställningar Outlook (e-post) Kalender Personer (kontakter)... 5 OneDrive molnet... 5.

Den här texten ska förhoppningsvis underlätta en del av anpassningarna. Det kan säkert finnas en del fel och annat tok.

USB till COM-port. Inlämningsuppgift 10b USB till COM-port. Här ska du: Installera en konverterare mellan gränssnitten USB och RS232 (COM-port).

INSTALLATION AV KLIENT

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Setup Internet Acess CSE-H55N

Instruktion för installation av etikettskrivare 2.31

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Office 365 Kompetens 2014 / MB

Guide: Programmera Ryze Tello

Installationsmanual ImageBank 2

Programmering. Scratch - grundövningar

Ibruktagande av Statistikcentralens gränssnittstjänster i QGISprogrammet

Win95/98 Nätverks Kompendium. av DRIFTGRUPPEN

EDA095 Nätverksprogrammering

LEX INSTRUKTION - LEXTALK

Så här byter du från Unifaun WebOrder (UWO) till Unifaun OnlineConnect (UOCT)

Instruktion till. PigWin PocketPigs. Del 1 - Installation

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Innehåll. Förändringar i v5.2

Inställningar hos klienter som behövs för BankIR 2.0.

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

HANDBOK LSM TRANSPONDERTERMINAL

Installera Windows Custom PostScript- eller PCL-skrivardrivrutin

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

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

Arbeta med rutter i Tracker MyWay och andra program.

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

2. Ta av skyddslocket (grått) från Downloadkeys 6-pin-kontakt.

BRUKSAVISNING EASY GSM

Felsökningsguide för Asgari-kameror

INNEHÅLLSFÖRTECKNING... 2 FÖRORD... 3 INLEDNING... 4 ATT ANVÄNDA MOTORERNA... 9 LOOP (UPPREPANDE) FUNKTIONEN SKAPA EN EGEN KLOSS...

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

ARX på Windows Vista, Windows 7 eller Windows 2008 server

Redigera bilder snabbt och enkelt!

batklubben.eu s hemsida

Beskrivning av PiiGAB QuickPost

Manual för version 12. Innehållsförteckning. 1. Lathund - Mobile. MyScore Städkontroll version 12

Installera SoS2000. Kapitel 2 Installation Innehåll

Administrationsmanual ImageBank 2

PNSPO! CF-korts hantering till NS-serien. 14 mars 2012 OMRON Corporation

WebBoard i distansutbildningen

Transkript:

Projektrapport MegaLoad Nätverksprogrammering EDA095 2012-05-16 Av: Pétur Hjartarson, ic08phj@student.lth.se Jelena Mirosavljević, mat08jmi@student.lu.se Elise Ellerstedt, adi09eel@student.lu.se Ann-Louise Andersson, adi09aan@student.lu.se

1. Bakgrund Denna rapport är en dokumentation av projektet inom kursen Nätverksprogrammering vid Lunds tekniska högskola. Syftet var att utveckla någon form av nätverkskommunikation. Vårt program möjliggör fildelning för användare som är medlemmar i en specifik multicastgrupp. Medlemmarna uppger vilka av dess filer som är tillgängliga för nedladdning. Vid överföring direktkopplas filägaren till mottagaren med en TCP-anslutning. 2. Kravspecifikation Programmet ska vara baserat på en multicastgrupp där användare kan ansluta för att bli medlemmar och därmed ange vilka filer de vill dela med sig av. Alla medlemmarna i gruppen kan se vilka filer som finns tillgängliga. Programmet ska klara av att stödja både uploads och downloads. Vid filöverföringen ska mottagaren direkt kopplas till filägaren. Överföringen sker via en TCP-anslutning mellan sändaren och mottagaren. 2.1. Krav Vid en ny medlemsanslutning ska multicastgruppen informera vilka filer som finns tillgängliga Vid ett nytt filtillägg ska alla medlemmar inom multicastgruppen informeras Vid filöverföring ska mottagaren ha en TCP-anslutning till sändaren 3. Modell Varje applikation fungerar som en server och en klient som skickar iväg sin egen IP-address till Multicast molnet, detta är endast synligt inom dess egna router (alternativt samma subnät). Varje applikation kör sedan två Multicast trådar, en för att ta emot IP-addresser och synliggöra dom för användaren och en för att skicka iväg sin egen. Om en användare inte skickar en Multicast inom loppet av 5 sekunder räknas den användaren som bortkopplad. När man har IP-addresser synliga under "The Cloud" fliken, kan man välja att synliggöra en användares fillista (vilken är lagrad i en fil som heter shared.txt som skapas i samma mapp som programmet körs). När man sedan tagit emot fillistan kan man välja vilken fil man vill ladda ner. Man skickar då iväg sökvägen för den valda filen och den andra användaren skickar den önskade filen. När filen är överförd, stängs fillistan. Under fliken "Upload" väljer du dem filer du vill dela. Dessa sökvägar kommer vara synliga för den andra användaren som begär fillistan. Programmet består av flertal klasser från att representera själva filöverföringen till att skapa ett användarvänligt gränssnitt. Vi har valt att inte förklara GUI-klasserna eftersom de är relativt självklara för programmerare. De är inte heller särskilt relevanta för kursen. Här kommer en kort beskrivning av de klasserna som vårt program består av: 3.1. MultiCom Denna klassen kopplar upp användaren mot multicastgruppen genom att skapa en MulticastSocket och går med i gruppen. Vår socket är bunden till porten 3333. Klassen innehåller även metoder för att hantera användare så som senduserdata(), setusers() och getname(). För att spara användare använder vi en ConcurrentHashMap<K,V> där key består av användarens IP-adress och value är tiden i systemet för en användare. Metoden senduserdata() hämtar en användares IP-adress och setusers() lägger till användaren i hachmapen. I denna klassen finns också metoden getfirstnonloopbackaddress() som används för att hämta datorns IP-adress. 3.2. MCRecieve

MCRecieve extendar trådklassen Thread vars metod run() har ersatts till att kontinuerligt anropa metoden, från föregående klass, setusers() på MultiCom-objekt. 3.3. MCSend Även denna klass extendar Thread. Run() utför metoden senduserdata() från MultiCom, väntar en viss tid och upprepar sedan metoden. Denna procedur repeteras oändligt. 3.4. Time Denna klass behandlar tidsformat. Det finns två metoder getdate() och gettime() som anropas i klassen MultiCom för att få fram värdet på value. 3.5. DirectCom DirectCom är klassen som representerar filöverföringen. Metoden addfile() lägger till en ny fil i användarens fillista. SendFileList() skickar en lista över vilka filer som är tillgängliga hos sändaren till mottagaren. Den valda filen hämtas med getfile(), omvandlas med Converter och överförs sedan med sendfile(). 3.6. DCServer DCServer använder trådar. I run() körs de metoderna som implementerats i DirectCom. Varje program består också av en server. Då den mottager ett meddelande som börjar på f ser han att det är en fil som begärs, han väntar på att filnamnet ska skickas från klienten och kan sedan skickar över denna. Om meddelandet däremot börjar med ett l så är det fillistan mottagaren efterfrågar. 3.7. Converter Denna klassen används för att omvandla filnamn av datatypen String till byte och tvärtom. Detta för att man ska kunna skicka filerna över kommunikationskanalen. Klassen innehåller metoderna FiletoByte() och BytetoFile(). Innan en fil skickas anropas metoden FiletoByte() och när den mottagits omvandlas den tillbaka med metoden BytetoFile(). 4. Användarhandledning När man kör programmet kommer man till GUI:t vilket ser ut som nedan.

Från början visas inga användare under The Cloud fliken (de användare som är anslutna till gruppen). För att uppdatera listan och få fram de som är anslutna måste man trycka på knappen Refresh Users. Varje användare visas i listan med sin IP-adress. Genom att välja en användare i listan och sedan trycka på knappen Get Files List får man upp ett nytt fönster med alla de filer den användaren har laddat upp. Du väljer den filen du vill ladda ner och trycker på Download för att ladda ner filen till din dator. För att ladda upp dina egna filer väljer du fliken Upload. Genom att trycka på knappen Upload a new file kan du välja vilken fil du vill ladda upp. Vill du ta bort en fil du inte längre vill ladda upp, markerar du filen och trycker på knappen Remove.

5. Utvärdering Eftersom vi satte upp krav som var relativt grundläggande för att programmet skulle fungera så lyckades vi uppfylla alla. Dock har vi omformulerat kravet att medlemmarna ska meddelas då en ny fil läggs till. Istället så måste användaren trycka på Get Files List i GUI:t för att få reda på vilka filer som är tillgängliga just då. Denna procedur bör upprepas varje gång användaren vill ladda ner för att få uppdaterad information om vilka filer man kan komma åt. En svårighet vi stött på under projektets gång var att ta reda på hur stor bufferstorleken ska vara för inkommande filer. Först använde vi färdigskapade byte vektorer med en bestämd storlek, vilket inte fungerade som vi ville. Tillslut hittade vi en algoritm som skapar en byte vektor som kan byggas på. När man har läst in hela filen med InputStreamreader() vet vi att byte vektorn är färdig och vi kan konvertera om den till en fil med Converter klassen. Projektet var väldigt givande och relevant för kursen. Vi utvecklade nya kunskaper inom projektutveckling, grupparbete samt programmering. Vi upplevde att strukturen och omfattningen av uppgiften var väl vald. 6. Programlistor Källkoden finns att hitta på hemsidan: http://users.student.lth.se/ic09aa3/eda095/