Cvičení na téma sí»ová komunikace přes TCP a UDP sockety

Scenar: V jaderne elektrarne Temelin doslo k havarii, primarni okruh byl znacne poskozen - i kdyz se podle provozovatele zpocatku jednalo o "drobny incident", SUJB naridil evakuaci nekolikakilometroveho okruhu. Nastesti nedoslo k vetsimu uniku radioaktivniho materialu, obyvatele se mohli za nekolik dni vratit do svych domovu a nikdo pri incidentu nebyl zranen. K tomu znacnou merou prispeli i autonomni roboti vyvinuti na katedre kybernetiky CVUT, ktere byly na miste temer okamzite nasazeny misto lidi a pomohly zamezit zvetsovani rozsahu havarie. :-) Kvuli vysoke urovni radiace a celkove nepriznivemu prostredi je na robotu velka nouze o vypocetni prostredky i bandwidth. Proto sitovou komunikaci ridi jednoduchy radic, ktery lze prepinat UDP packety na IP adresu robota do ruznych (navzajem se vylucujicich) rezimu - upload firmware, sledovani senzoru, pristup na jina autonomni zarizein v okoli (roboty se sdruzuji do mesh site) nebo treba stahovani fotografie z hlavni kamery robota.

Zadání

Vasim ukolem je napsat klientskou cast prave pro stahovac fotografii. Robot zije na specifikovane IP adrese, radic posloucha na UDP portu 8740 a prijima UDP packety se ctyrznakovymi prikazy. Na prikaz "CAMR" zareaguje odpovednim UDP packetem, ve kterem bude (v network byte order) cislo portu HTTP serveru (na te same IP adrese), na ktery je mozno se pripojit a stahnout soubor /front-current.jpg - ten ulozte do aktualniho adresare.

HTTP server je aktivovan jen v urcitem casovem intervalu - 0.5s po prikazu CAMR trva jeho inicializace, pak je 5s dostupny a pak je opet vypnut - stahnout fotografii lze tedy pouze behem tohoto casoveho okna.

Pozor, vzhledem k vysoke urovni radiace a ne zcela spolehlivemu spojeni bojuje linka s vysokou urovni sumu; nektere packety se tedy mohou ztracet nebo se vracet s prodlenim. Budte tedy pripraveni pozadavky opakovat.

Soucasti zadani je kostra klienta, do ktere staci doplnit jednotlive funkce pro sitovou komunikaci:


Soubory

client.tgz

Server

Pro testovani aplikace pouzijte server pasky.or.cz:8740.