Several examples run on only mbed-os5.13.0 (not 5.14.0)

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Committer:
kenjiArai
Date:
Wed Aug 07 05:39:01 2019 +0000
Revision:
3:35ac9ee7d2d6
Child:
4:0f4affc00183
1st trial revision (Not finalized yet)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 3:35ac9ee7d2d6 1 // Original
kenjiArai 3:35ac9ee7d2d6 2 // https://os.mbed.com/teams/ST/code/mbed-os-tcp-server-example/
kenjiArai 3:35ac9ee7d2d6 3 //
kenjiArai 3:35ac9ee7d2d6 4 // Modified by K.Arai
kenjiArai 3:35ac9ee7d2d6 5 // July 17th, 2019
kenjiArai 3:35ac9ee7d2d6 6 //
kenjiArai 3:35ac9ee7d2d6 7
kenjiArai 3:35ac9ee7d2d6 8 #include "select_program.h"
kenjiArai 3:35ac9ee7d2d6 9 //#define EXAMPLE_5_TCP_SERVER
kenjiArai 3:35ac9ee7d2d6 10 #ifdef EXAMPLE_5_TCP_SERVER
kenjiArai 3:35ac9ee7d2d6 11
kenjiArai 3:35ac9ee7d2d6 12 #if !FEATURE_LWIP
kenjiArai 3:35ac9ee7d2d6 13 #error [NOT_SUPPORTED] LWIP not supported for this target
kenjiArai 3:35ac9ee7d2d6 14 #endif
kenjiArai 3:35ac9ee7d2d6 15
kenjiArai 3:35ac9ee7d2d6 16 #include "mbed.h"
kenjiArai 3:35ac9ee7d2d6 17 #include "EthernetInterface.h"
kenjiArai 3:35ac9ee7d2d6 18 #include "TCPServer.h"
kenjiArai 3:35ac9ee7d2d6 19 #include "TCPSocket.h"
kenjiArai 3:35ac9ee7d2d6 20
kenjiArai 3:35ac9ee7d2d6 21 Serial pc(USBTX, USBRX, 115200);
kenjiArai 3:35ac9ee7d2d6 22
kenjiArai 3:35ac9ee7d2d6 23 #define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
kenjiArai 3:35ac9ee7d2d6 24 #define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
kenjiArai 3:35ac9ee7d2d6 25 #define HTTP_MESSAGE_BODY "" \
kenjiArai 3:35ac9ee7d2d6 26 "<html>" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 27 " <body style=\"display:flex;text-align:center\">" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 28 " <div style=\"margin:auto\">" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 29 " <h1>Hello World</h1>" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 30 " <p>It works !</p>" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 31 " </div>" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 32 " </body>" "\r\n" \
kenjiArai 3:35ac9ee7d2d6 33 "</html>"
kenjiArai 3:35ac9ee7d2d6 34
kenjiArai 3:35ac9ee7d2d6 35 #define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n" \
kenjiArai 3:35ac9ee7d2d6 36 HTTP_HEADER_FIELDS "\r\n" \
kenjiArai 3:35ac9ee7d2d6 37 "\r\n" \
kenjiArai 3:35ac9ee7d2d6 38 HTTP_MESSAGE_BODY "\r\n"
kenjiArai 3:35ac9ee7d2d6 39
kenjiArai 3:35ac9ee7d2d6 40 int main()
kenjiArai 3:35ac9ee7d2d6 41 {
kenjiArai 3:35ac9ee7d2d6 42 printf("Basic HTTP server example\r\n");
kenjiArai 3:35ac9ee7d2d6 43
kenjiArai 3:35ac9ee7d2d6 44 EthernetInterface eth;
kenjiArai 3:35ac9ee7d2d6 45 eth.connect();
kenjiArai 3:35ac9ee7d2d6 46
kenjiArai 3:35ac9ee7d2d6 47 printf("The target IP address is '%s'\r\n", eth.get_ip_address());
kenjiArai 3:35ac9ee7d2d6 48
kenjiArai 3:35ac9ee7d2d6 49 TCPServer srv;
kenjiArai 3:35ac9ee7d2d6 50 TCPSocket clt_sock;
kenjiArai 3:35ac9ee7d2d6 51 SocketAddress clt_addr;
kenjiArai 3:35ac9ee7d2d6 52
kenjiArai 3:35ac9ee7d2d6 53 /* Open the server on ethernet stack */
kenjiArai 3:35ac9ee7d2d6 54 srv.open(&eth);
kenjiArai 3:35ac9ee7d2d6 55
kenjiArai 3:35ac9ee7d2d6 56 /* Bind the HTTP port (TCP 80) to the server */
kenjiArai 3:35ac9ee7d2d6 57 srv.bind(eth.get_ip_address(), 80);
kenjiArai 3:35ac9ee7d2d6 58
kenjiArai 3:35ac9ee7d2d6 59 /* Can handle 5 simultaneous connections */
kenjiArai 3:35ac9ee7d2d6 60 srv.listen(5);
kenjiArai 3:35ac9ee7d2d6 61
kenjiArai 3:35ac9ee7d2d6 62 while (true) {
kenjiArai 3:35ac9ee7d2d6 63 srv.accept(&clt_sock, &clt_addr);
kenjiArai 3:35ac9ee7d2d6 64 printf("accept %s:%d\r\n", clt_addr.get_ip_address(), clt_addr.get_port());
kenjiArai 3:35ac9ee7d2d6 65 clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE));
kenjiArai 3:35ac9ee7d2d6 66 }
kenjiArai 3:35ac9ee7d2d6 67 }
kenjiArai 3:35ac9ee7d2d6 68
kenjiArai 3:35ac9ee7d2d6 69 #endif