Februar 2013 | Download Projekt (zip)
Networking var et kernemodul på andet år. Mange synes, det er svært eller kedeligt, men jeg havde det helt fint med det. Det her var mit første rigtige Java-projekt bortset fra små opgaver for at lære sproget. Den svære del var at designe programmet og sikre, at data blev synkroniseret korrekt. Jeg skulle bruge et jar-bibliotek fra underviseren og interagere med det, men jeg havde kun ansvaret for netværksdelen.
Overordnet nåede jeg det meste af ICA’en, blandt andet:
- TCP- og UDP-forbindelser
- Klienter kan se hinandens træk
- Håndtering af flere brugere via tråde
- Implementeret grundlæggende Sten, Saks, Papir
- Klientstatistik på serveren (forsvinder dog ved restart!)
- Klienter beholder data, når de joiner med samme brugernavn
- Klienttilstande – man kan ikke afbryde en igangværende kamp
Der er bugs – for eksempel hvis nogen joiner med samme brugernavn. Det ville dog ikke være så svært at løse. Da jeg skulle bruge underviserens API, som også havde fejl, var det ofte svært at finde ud af, om problemet lå hos mig eller ej. I nogle tilfælde dukkede klienten op i øverste venstre hjørne, når den joinede, i stedet for den position, der kom via UDP. En løsning ville være også at sende positionen via TCP ved join, men det lå uden for mit ansvarsområde.
En anden fejl var, at når man joinede med samme brugernavn for at få sine data tilbage, gik det fint – indtil en anden klient joinede, og det hele brød sammen. En server-side kontrol, der tjekkede, om brugernavnet var i brug, og sendte en besked om at vælge et andet, ville løse det. Men klientapplikationen (som jeg ikke styrede) joinede bare og sendte beskeden alligevel.
Alt i alt var det sjovt at arbejde med networking, og jeg gør det gerne igen – især hvis jeg får lidt mere kontrol og bedre overblik over kravene.
