Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2015:http-sd [2015/12/28 18:04] Dmytro Kasianenko |
2015:http-sd [2016/01/18 12:23] (aktuální) Dmytro Kasianenko [Realizace. Server] |
||
---|---|---|---|
Řádek 5: | Řádek 5: | ||
======== Úvod ====== | ======== Úvod ====== | ||
- | Vývojové deska připojena přes Ethernet. Na web-stránce (10.42.0.2) je vytvořen seznam souborů a složek a je možnost stahnout nebo nahrat soubory na SD-kartu. Projekt se skladá z severové a klientské časti. Server (na desce) troří webovu stranku, posíla požadavky klientu pro stahováni nebo nahrvání souborů. Klient posíla nebo přijíma soubory. | + | Vývojové deska připojena přes Ethernet. Na web-stránce (10.42.0.2) je vytvořen seznam souborů a složek a je možnost stáhnout nebo nahrát soubory na SD-kartu. Projekt se skládá z serverové a klientské části. Server (na desce) tvoří webovou stránku, posílá požadavky klientu pro stahováni nebo nahrávání souborů. Klient posílá nebo přijímá soubory. |
---- | ---- | ||
======== Software ====== | ======== Software ====== | ||
- | Pro realizace projektu je použit compiler [[https://developer.mbed.org/|mbed]] a knihovny pro práce z sockety a SD-karty pro severovu čast a g++ pro klientskou čast. | + | Pro realizace projektu je použit compiler [[https://developer.mbed.org/|mbed]] a knihovny pro práce z sockety a SD-karty pro serverovou část a g++ pro klientskou část. |
- | ---- | + | |
- | ======== Zadání ====== | + | |
- | Realizujte zápis a čtení souborů z SD-karty přes Ethernet s použitím vývojové desky FRDM-K64F. Využijte protokol HTTP a jeho požadavky GET a PUT. Pro přístup k souborům na kartě vytvořte jednoduchou webovou stránku (listing). | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | ======== Úvod ====== | + | |
- | Vývojové deska připojena přes Ethernet. Na web-stránce (10.42.0.2) je vytvořen seznam souborů a složek a je možnost stahnout nebo nahrat soubory na SD-kartu. Projekt se skladá z severové a klientské časti. Server (na desce) troří webovu stranku, posíla požadavky klientu pro stahováni nebo nahrvání souborů. Klient posíla nebo přijíma soubory. | + | |
- | ---- | + | |
- | ======== Software ====== | + | |
- | Pro realizace projektu je použit compiler [[https://developer.mbed.org/|mbed]] a knihovny pro práce z sockety a SD-karty pro severovu čast a g++ pro klientskou čast. | + | |
---- | ---- | ||
======== Realizace. Server ====== | ======== Realizace. Server ====== | ||
- | Úplný kód [[http://pastie.org/10657347|zde]]. | + | Úplný kód [[http://pastie.org/10693300|zde]]. |
===== Webová stránka ===== | ===== Webová stránka ===== | ||
Je puštěn jednoduchý web-server, který odpovídá na požadavky prohlížeče HTML-stránkou, která se generuje na základě obsahu SD-karty. | Je puštěn jednoduchý web-server, který odpovídá na požadavky prohlížeče HTML-stránkou, která se generuje na základě obsahu SD-karty. | ||
Řádek 63: | Řádek 52: | ||
} | } | ||
</code> | </code> | ||
+ | ---- | ||
===== Dowloading ===== | ===== Dowloading ===== | ||
Kliknutím na odkaz prohlížeč generuje GET-požadavek | Kliknutím na odkaz prohlížeč generuje GET-požadavek | ||
Řádek 71: | Řádek 61: | ||
{{ :2015:2.png |otázka}} | {{ :2015:2.png |otázka}} | ||
posílá požadavek ''PUT <Jméno souboru>'' a posílá soubor klientovi (funkce ''dowloading''). | posílá požadavek ''PUT <Jméno souboru>'' a posílá soubor klientovi (funkce ''dowloading''). | ||
+ | ---- | ||
===== Uploading ===== | ===== Uploading ===== | ||
- | Pomoci formy je možně nahrat soubor: | + | Pomoci formy je možně nahrát soubor: |
{{ :2015:3.png?nolink |form}} | {{ :2015:3.png?nolink |form}} | ||
Po výběru souboru prohlížeč pošle serveru GET-požadavek: | Po výběru souboru prohlížeč pošle serveru GET-požadavek: | ||
Řádek 78: | Řádek 69: | ||
Server z toho dostane jméno souboru (funkce ''get_file_name'' a ''del_file'') a pomoci funkce ''uploading'' pošle klientu požadavek ''GET <Jméno souboru>'' a bude čekat soubor. | Server z toho dostane jméno souboru (funkce ''get_file_name'' a ''del_file'') a pomoci funkce ''uploading'' pošle klientu požadavek ''GET <Jméno souboru>'' a bude čekat soubor. | ||
Klient taky dostane jméno a pošle soubor serveru. | Klient taky dostane jméno a pošle soubor serveru. | ||
+ | ---- | ||
==== Jíné funkce ==== | ==== Jíné funkce ==== | ||
* ''cleaning'' - čištění proměnných | * ''cleaning'' - čištění proměnných | ||
* ''add_to_html'' - přidání řádků do HTML-stránky | * ''add_to_html'' - přidání řádků do HTML-stránky | ||
* ''going_up'' - jít nahoru ve systému souborů | * ''going_up'' - jít nahoru ve systému souborů | ||
- | * ''url_decode'' - dekodování URL-adres | + | * ''url_decode'' - dekódování URL-adres |
+ | |||
+ | ---- | ||
======== Realizace. Klient ====== | ======== Realizace. Klient ====== | ||
Úplný kód [[http://pastie.org/10657458|zde]]. | Úplný kód [[http://pastie.org/10657458|zde]]. | ||
- | Na základě požadavků ze serveru klient hledá, posilá nebo dostavá soubory. | + | Na základě požadavků ze serveru klient hledá, posílá nebo dostává soubory. |
* Při požadavku ''FND <Jméno souboru>'' klient hledá soubor ve složce a posílá '1' když soubor soubor je nalezen nebo '0' když není. | * Při požadavku ''FND <Jméno souboru>'' klient hledá soubor ve složce a posílá '1' když soubor soubor je nalezen nebo '0' když není. | ||
* Při požadavku ''PUT <Jméno souboru>'' otevírá soubor a zapisuje přijaté data do něho. | * Při požadavku ''PUT <Jméno souboru>'' otevírá soubor a zapisuje přijaté data do něho. | ||
- | * Při požadavku ''GET <Jméno souboru>'' posílá soubor klientoví. | + | * Při požadavku ''GET <Jméno souboru>'' posílá soubor klientu. |
**Obecné řešení odesílání souborů:** | **Obecné řešení odesílání souborů:** | ||
<code cpp> | <code cpp> | ||
Řádek 108: | Řádek 103: | ||
} | } | ||
</code> | </code> | ||
+ | ====== Video demostrace ====== | ||
+ | - Přechod mezi složky | ||
+ | - Uploading urldecode.out do složky /sd/mydir | ||
+ | - Uploading 2.png | ||
+ | - Downloading tpy.cpp | ||
+ | - Downloading urldecode.out | ||
+ | {{youtube>D0202I0p_mY?medium}} | ||
+ | ====== Závěr ====== | ||
+ | Cíle projektu byly dosaženy: lze stahovat a nahrávat soubory přes webové rozhraní. Ale je možnosti rozšířit ho funkčnost, například sledovat stav sítě a opakovat předávání souboru za jeho přerušení, nebo používat bezdrátový spoj atd. |