Skip to content

mariantaragel/ipkcpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPK Projekt 1

Cieľom projektu je vytvoriť klienta ku vzdialenej kalkulačke, ktorý bude komunikovať pomocou protokolu IPK Calculator Protocol. Program je napísaný v objekoto orientovanom jazyku C#.

Štruktúra projektu

Z hľadiska štruktúry je projekt rozdelený do troch tried a to Program, Udp a Tcp. Program je základná trieda, ktorá obsahuje metódu Main(), ktorá je vstupným bodom programu. Triedy Udp a Tcp poskytujú metódy pre komunikáciu pomocou UDP/TCP protokolu.

UML Diagram

classDiagram
class Program
    Program : + Main()
class Udp
	Udp : + Host
	Udp : + Port
    Udp : + Communicate()
class Tcp
	Tcp : + Host
	Tcp : + Port
    Tcp : + Communicate()
Program ..> Udp : <<<a>create>>
Program ..> Tcp : <<<a>create>>
Loading

Teória

V nasledujúcej časti stručne zhrniem teóriu nutnú k pochopeniu implementovanej funkcionality. Zameriam sa hlavne na dva protokoly transportnej vrstvy a to UDP a TCP. Vychádzať budem zo zdrojov [1] a [2].

UDP

Protokol UDP, definovaný v [RFC 768], poskytuje nespojovú transportnú službu. Prenos dát pomocou takéhoto spojenia je nespoľahlivý a nič negarantuje. Postup pri komunikácii pomocou tohto protokolu zo strany klienta pozostáva z nasledujúcich fáz:

  1. Vytvorenie socketu
  2. Odoslanie dát na server
  3. Čakanie na odpoveď
  4. Ukončenie komunikácie

TCP

Protokol TCP je spojovo orientovaná transportná služba. Pred začatím komunikácie musí prebehnúť medzi serverom a klientom tzv. "handshake" - to znamená, že si musia navzájom poslať úvodné správy, ktoré nastavia parametre komunikácie. Protokol TCP je spoľahlivý a pri neúspechu doručenia správy, opakovane posiela dáta znovu. Pri TCP je postup pri komunikácii na strane klienta nasledovný:

  1. Vytvorenie socketu
  2. Ustanovenie spojenia
  3. Odoslanie dát na server
  4. Čakanie na odpoveď
  5. Ukončenie komunikácie

Testovanie

Testovanie bolo uskutočnené automatizovanými skriptami test_cli.py, test_udp.py a test_tcp.py. Aplikácia bola testovaná v poskytnutom virtuálnom stroji s operačným systémom Linux (distribúcia NixOS 22.11 Raccoon). Počas testovania aplikácia komunikovala s refernčným serverom, ktorý bol spustený nasledovným príkazom: ipkpd -h 127.0.0.1 -p 2023 -m (udp|tcp). Testy boli spúšťané na zariadení Dell Latitude 5491 (Intel Core i7, 8GB RAM DDR4, 256GB SSD). Testovaná aplikácia bola vo verzii 1.0.0.

  • test_cli.py testuje správne spracovanie argumentov príkazového riadku
  • test_udp.py testuje komunikáciu pomocou protokolu UDP
  • test_tcp.py testuje komunikáciu pomocou protokolu TCP

Vystup z testovania:

[nix-shell:~/IPK-Projekt-1/src/bin/Debug/net6.0]$ python test_cli.py 
Testing Command-line interface
 Passed ./ipkcpc -h 127.0.0.1 -p 2023 -m udp -x
 Passed ./ipkcpc -p 2023 -m tcp
 Passed ./ipkcpc -h 127.0.0.1 -p 2023 -m sctp
 Passed ./ipkcpc -h 127.0.0.1 -p eighty -m udp
 Passed ./ipkcpc -h google.com -p 2023 -m tcp
 Passed ./ipkcpc
 Passed ./ipkcpc --help

[nix-shell:~/IPK-Projekt-1/src/bin/Debug/net6.0]$ python test_udp.py 
Testing UDP
 Passed (+ 1 2)
 Passed (a b)
 Passed (/ 0 -1) (- -50 60)
 Passed (* 12 12) (/ 10 0) (- c d) (/ 23 11)
 Passed Empty input

[nix-shell:~/IPK-Projekt-1/src/bin/Debug/net6.0]$ python test_tcp.py 
Testing TCP
 Passed HELLO SOLVE (+ 1 2) BYE
 Passed HELLO SOLVE (- 0 -1) SOLVE (/ 42 2) BYE
 Passed HELLO BYE
 Passed Hi
 Passed Empty input

Bibliografia

[1] KUROSE James F. a Keith W. ROSS. Computer networking: a top-down approach. Eighth edition.; Global edition. Harlow: Pearson Education Limited, 2022, ISBN 978-1-292-40546-9.
[2] DOLEJŠKA Daniel a KOUTENSKÝ Michal Programování síťových aplikací. VUT FIT: NES@FIT, 2023

About

Client for the IPK Calculator Protocol

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published