Http server witch sends HTML file to client
Dependencies: EthernetInterface SDFileSystem mbed-rtos mbed
Fork of SKM_SERWER_WWW by
Revision 4:7a6ba70f58de, committed 2017-12-19
- Comitter:
- filiops
- Date:
- Tue Dec 19 00:08:16 2017 +0000
- Parent:
- 3:c05bbec8d96b
- Commit message:
- HTTP server
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r c05bbec8d96b -r 7a6ba70f58de main.cpp --- a/main.cpp Wed Dec 13 17:42:27 2017 +0000 +++ b/main.cpp Tue Dec 19 00:08:16 2017 +0000 @@ -3,9 +3,97 @@ #include "SDFileSystem.h" #include <string.h> #include <stdio.h> +#include <iostream> + +#define PORT 80 + + +const char *ip = "192.168.100.1"; +const char *mask = "255.255.255.0"; +const char *gateway = "192.168.100.1"; + +Serial pc(USBTX, USBRX); +FILE *fp; +char buffer[1024]; + +EthernetInterface eth; //Tworzenie obiektu Ethernet +SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); //inicjalizacja czytnika karty SD (MOSI,MISO,SCK,CS) +TCPSocketConnection client; //Tworzenie socketu TCP dla 2 stron (client, server) +TCPSocketServer svr; + +bool server_is_listened = false; // Ustawienie defaultowych wartosci flag +bool client_is_connected = false; + +void Send_Data_From_SD() +{ + pc.printf("Inicjalizacja... \r\n"); + wait(2); + + fp = fopen("/sd/hello.htm", "r"); + if (fp == NULL) { + pc.printf("\r\nNie udalo sie odczytac pliku hello.htm.\r\n"); + } else { + printf("\nOdczytano plik hello.htm z karty SD.\r\n"); + int size = fread(buffer, sizeof(char), 1024, fp); + printf("Liczba znakow: %d, tekst z pliku hello.htm:\r\n %s \r\n", size, buffer); + client.send(buffer, 1024); // Wysyłanie danych z odczytanego pliku do clienta TCP co powoduje odpowiednie akcje w przegladarce + fclose(fp); + } + + client_is_connected = false; +} +void Initialize_Server(void) +{ + eth.init(ip,mask,gateway); //Inicjalizacja polaczenia Ethernet, ustawienie statycznego adresu IP + eth.connect(); //Aktywowanie interfejsu + printf("Zainicjowano Ethernet! \r\n"); + printf("Adres IP: %s\r\n",eth.getIPAddress()); + printf("Maska: %s\r\n",eth.getNetworkMask()); + printf("Brama: %s\r\n",eth.getGateway()); + printf("Adres MAC urzadzenia: %s\r\n",eth.getMACAddress()); + if (svr.bind(PORT) < 0) + { + printf("Nie udalo sie powiazac serwera TCP z portem 80 (HTTP)! \r\n"); + return; + } + else + { + printf("Powiazano serwer TCP z portem 80 (HTTP). \r\n"); + server_is_listened = true; + } + + if (svr.listen(1) < 0) + { + printf("Nie udalo sie rozpoczac nasluchiwania polaczen przychodzacych serwera TCP! \r\n"); + return; + } + else + { + printf("Serwer TCP rozpoczal nasluchiwanie polaczen przychodzacych. \r\n"); + } +} int main() { - - return 0; + pc.baud(9600); + printf("Zainicjowano UART! \r\n"); + printf("Predkosc bitowa transmisji - 9600b/s.\r\n"); + Initialize_Server(); + while (server_is_listened) { + if (svr.accept(client)) + { + printf("Nie udalo sie zaakceptowac polaczenia z klientem! \r\n"); + } + else + { + printf("Polaczono z klientem. IP klienta: %s\r\n", client.get_address()); + client_is_connected = true; + while (client_is_connected) + { + Send_Data_From_SD(); + } + client.close(); + printf("Wyslano dane do klienta i rozlaczono sesje. \r\n"); + } + } }