Alternative TCPSocket example using an HTTP GET to read a short "helloworld" text web page using a different server

Fork of ARMs demo HTTP socket demo. ARM's server was redirected and the demo was no longer working. An alternative server was setup and the code was modified to display the web page text in addition to just "200 OK". Only works for a very short web page - buffer only 400 characters but RAM is running out on the LPC1768 in the demo! Data read from the web page is read and parsed to control the mbed's 4 LEDs for a basic IoT demo.

Committer:
4180_1
Date:
Mon Feb 15 18:19:25 2021 +0000
Revision:
5:66c4a71d22e9
Parent:
4:d3627ca18f87
Child:
6:9cf6630fa25d
ver 1.1 - added MAC printout and more messages

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mab5449 0:6b383744246e 1 #include "mbed.h"
mab5449 0:6b383744246e 2 #include "EthernetInterface.h"
mab5449 0:6b383744246e 3
mab5449 0:6b383744246e 4 // Network interface
mab5449 0:6b383744246e 5 EthernetInterface net;
mab5449 0:6b383744246e 6
mab5449 0:6b383744246e 7 // Socket demo
mab5449 0:6b383744246e 8 int main() {
4180_1 5:66c4a71d22e9 9 // Show MAC in case it is needed to enable DHCP on a secure network
4180_1 5:66c4a71d22e9 10 char mac[6];
4180_1 5:66c4a71d22e9 11 mbed_mac_address(mac);
4180_1 5:66c4a71d22e9 12 printf("\r\rmbed's MAC address is %02x:%02x:%02x:%02x:%02x:%02x\n\r", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
mab5449 0:6b383744246e 13 // Bring up the ethernet interface
4180_1 5:66c4a71d22e9 14 printf("Waiting for IP address from DHCP Server\n\r");
4180_1 5:66c4a71d22e9 15 wait(1.0);
4180_1 5:66c4a71d22e9 16 net.connect();
4180_1 3:576f312d2601 17 printf("\n\rEthernet socket example\n\r");
mab5449 0:6b383744246e 18
mab5449 0:6b383744246e 19 // Show the network address
mab5449 0:6b383744246e 20 const char *ip = net.get_ip_address();
4180_1 5:66c4a71d22e9 21 printf("IP address is: %s\n\r", ip ? ip : "Timeout - No IP obtained");
mab5449 0:6b383744246e 22
mab5449 0:6b383744246e 23 // Open a socket on the network interface, and create a TCP connection to mbed.org
mab5449 0:6b383744246e 24 TCPSocket socket;
mab5449 0:6b383744246e 25 socket.open(&net);
4180_1 3:576f312d2601 26 socket.connect("hamblen.ece.gatech.edu", 80);
mab5449 0:6b383744246e 27
mab5449 0:6b383744246e 28 // Send a simple http request
4180_1 3:576f312d2601 29 char sbuffer[] = "GET /hello.txt HTTP/1.1\r\nHost: hamblen.ece.gatech.edu\r\n\r\n";
mab5449 0:6b383744246e 30 int scount = socket.send(sbuffer, sizeof sbuffer);
4180_1 3:576f312d2601 31 //print out packet
4180_1 4:d3627ca18f87 32 printf("sent %d [%.*s]\n\r", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
mab5449 0:6b383744246e 33
4180_1 3:576f312d2601 34 // Recieve a simple http response and print out the response line and text
4180_1 3:576f312d2601 35 char rbuffer[400]; //enough for a very short text page - almost out of RAM!
mab5449 0:6b383744246e 36 int rcount = socket.recv(rbuffer, sizeof rbuffer);
4180_1 5:66c4a71d22e9 37 rbuffer[rcount] = 0; //terminate to print as a C string;
4180_1 3:576f312d2601 38 printf("recv %d [%.*s]\n\r", rcount, strstr(rbuffer, "\r\n"), rbuffer);
mab5449 0:6b383744246e 39
mab5449 0:6b383744246e 40 // Close the socket to return its memory and bring down the network interface
mab5449 0:6b383744246e 41 socket.close();
mab5449 0:6b383744246e 42
mab5449 0:6b383744246e 43 // Bring down the ethernet interface
mab5449 0:6b383744246e 44 net.disconnect();
4180_1 5:66c4a71d22e9 45 printf("Done\n\r");
mab5449 0:6b383744246e 46 }