Image Writer / Mbed OS mbed-os-tcp-server-example-A
Committer:
ImageWriter
Date:
Fri Nov 16 11:45:08 2018 +0000
Revision:
0:4523f33a5ce4
For Mbed-CLI import.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ImageWriter 0:4523f33a5ce4 1 //#if !FEATURE_LWIP
ImageWriter 0:4523f33a5ce4 2 // #error [NOT_SUPPORTED] LWIP not supported for this target
ImageWriter 0:4523f33a5ce4 3 //#endif
ImageWriter 0:4523f33a5ce4 4
ImageWriter 0:4523f33a5ce4 5 #define CHECKSUM_GEN_ICMP 1
ImageWriter 0:4523f33a5ce4 6
ImageWriter 0:4523f33a5ce4 7 #include "mbed.h"
ImageWriter 0:4523f33a5ce4 8 #include "EthernetInterface.h"
ImageWriter 0:4523f33a5ce4 9 #include "TCPServer.h"
ImageWriter 0:4523f33a5ce4 10 #include "TCPSocket.h"
ImageWriter 0:4523f33a5ce4 11
ImageWriter 0:4523f33a5ce4 12 #define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
ImageWriter 0:4523f33a5ce4 13 #define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
ImageWriter 0:4523f33a5ce4 14 #define HTTP_MESSAGE_BODY "" \
ImageWriter 0:4523f33a5ce4 15 "<html>" "\r\n" \
ImageWriter 0:4523f33a5ce4 16 "<meta http-equiv=\"Refresh\" content=\"0.1\">"\
ImageWriter 0:4523f33a5ce4 17 " <body style=\"display:flex;text-align:center\">" "\r\n" \
ImageWriter 0:4523f33a5ce4 18 " <div style=\"margin:auto\">" "\r\n" \
ImageWriter 0:4523f33a5ce4 19 " <h1>Hello World</h1>" "\r\n" \
ImageWriter 0:4523f33a5ce4 20 " <p>It works !</p>" "\r\n" \
ImageWriter 0:4523f33a5ce4 21 " <a href=\"https://www.google.com/\">google</a>" "\r\n" \
ImageWriter 0:4523f33a5ce4 22 " <a href=\"DETAILS.TXT\">text</a>" "\r\n" \
ImageWriter 0:4523f33a5ce4 23 " </div>" "\r\n" \
ImageWriter 0:4523f33a5ce4 24 " <h1 id=\"time\"></h1>" \
ImageWriter 0:4523f33a5ce4 25 " <script>"\
ImageWriter 0:4523f33a5ce4 26 " time();"\
ImageWriter 0:4523f33a5ce4 27 " function time(){" \
ImageWriter 0:4523f33a5ce4 28 " var now = new Date();"\
ImageWriter 0:4523f33a5ce4 29 " document.getElementById(\"time\").innerHTML = now.toLocaleTimeString();"\
ImageWriter 0:4523f33a5ce4 30 " }"\
ImageWriter 0:4523f33a5ce4 31 " setInterval(\'time()\',1000);"\
ImageWriter 0:4523f33a5ce4 32 " setTimeout(function () {"\
ImageWriter 0:4523f33a5ce4 33 " location.reload();"\
ImageWriter 0:4523f33a5ce4 34 " }, 10);"\
ImageWriter 0:4523f33a5ce4 35 " </script>"\
ImageWriter 0:4523f33a5ce4 36 " </body>" "\r\n" \
ImageWriter 0:4523f33a5ce4 37 "</html>"
ImageWriter 0:4523f33a5ce4 38
ImageWriter 0:4523f33a5ce4 39 #define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n" \
ImageWriter 0:4523f33a5ce4 40 HTTP_HEADER_FIELDS "\r\n" \
ImageWriter 0:4523f33a5ce4 41 "\r\n" \
ImageWriter 0:4523f33a5ce4 42 HTTP_MESSAGE_BODY "\r\n"
ImageWriter 0:4523f33a5ce4 43
ImageWriter 0:4523f33a5ce4 44 DigitalOut led1(LED1);
ImageWriter 0:4523f33a5ce4 45
ImageWriter 0:4523f33a5ce4 46 int main()
ImageWriter 0:4523f33a5ce4 47 {
ImageWriter 0:4523f33a5ce4 48 long i = 0;
ImageWriter 0:4523f33a5ce4 49 printf("Basic HTTP server example\n");
ImageWriter 0:4523f33a5ce4 50
ImageWriter 0:4523f33a5ce4 51 EthernetInterface eth;
ImageWriter 0:4523f33a5ce4 52 eth.set_dhcp(false);
ImageWriter 0:4523f33a5ce4 53 eth.set_network("192.168.3.78","255.255.252.0","192.168.0.1");
ImageWriter 0:4523f33a5ce4 54 if(eth.connect() == 0){
ImageWriter 0:4523f33a5ce4 55 printf("The target IP address is '%s'\n", eth.get_ip_address());
ImageWriter 0:4523f33a5ce4 56 }else{
ImageWriter 0:4523f33a5ce4 57 printf("Connect error!");
ImageWriter 0:4523f33a5ce4 58 exit(-1);
ImageWriter 0:4523f33a5ce4 59 }
ImageWriter 0:4523f33a5ce4 60
ImageWriter 0:4523f33a5ce4 61 TCPServer srv;
ImageWriter 0:4523f33a5ce4 62 TCPSocket clt_sock;
ImageWriter 0:4523f33a5ce4 63 SocketAddress clt_addr;
ImageWriter 0:4523f33a5ce4 64
ImageWriter 0:4523f33a5ce4 65 /* Open the server on ethernet stack */
ImageWriter 0:4523f33a5ce4 66 srv.open(&eth);
ImageWriter 0:4523f33a5ce4 67
ImageWriter 0:4523f33a5ce4 68 /* Bind the HTTP port (TCP 80) to the server */
ImageWriter 0:4523f33a5ce4 69 srv.bind(eth.get_ip_address(), 80);
ImageWriter 0:4523f33a5ce4 70
ImageWriter 0:4523f33a5ce4 71 /* Can handle 5 simultaneous connections */
ImageWriter 0:4523f33a5ce4 72 srv.listen(5);
ImageWriter 0:4523f33a5ce4 73
ImageWriter 0:4523f33a5ce4 74 while (true) {
ImageWriter 0:4523f33a5ce4 75 srv.accept(&clt_sock, &clt_addr);
ImageWriter 0:4523f33a5ce4 76 printf("accept %s:%d\r\n", clt_addr.get_ip_address(), clt_addr.get_port());
ImageWriter 0:4523f33a5ce4 77 clt_sock.send(HTTP_RESPONSE, strlen(HTTP_RESPONSE));
ImageWriter 0:4523f33a5ce4 78 printf("%d\r\n",i++);
ImageWriter 0:4523f33a5ce4 79 led1 = !led1;
ImageWriter 0:4523f33a5ce4 80 }
ImageWriter 0:4523f33a5ce4 81 }