Simple mbed OS sockets example for mbed OS5 & W5500 SPI Ethernet controller. This is a quick example of a simple HTTP client program using the network-socket API that is provided as a part of mbed-os. The program brings up an underlying network interface, and uses it to perform an HTTP transaction over a TCPSocket.
Dependencies: W5500Interface easy-connect
Fork of mbed-os-example-mbed5-sockets by
Result
- Serial Terminal Log
Diff: main.cpp
- Revision:
- 55:8165a6a797a4
- Parent:
- 49:1923a727df5b
--- a/main.cpp Tue Jul 31 14:15:07 2018 +0100 +++ b/main.cpp Mon Aug 13 08:12:45 2018 +0000 @@ -1,4 +1,7 @@ +#include <string> #include "mbed.h" +#include "easy-connect.h" +#include "nsapi_dns.h" // Network interface NetworkInterface *net; @@ -18,8 +21,16 @@ printf("Mbed OS version: %d.%d.%d\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION); #endif - net = NetworkInterface::get_default_instance(); +// net = NetworkInterface::get_default_instance(); + printf("Easy connect...\n"); + net = easy_connect(true); + if (!net) { + printf("Cannot connect to the network, see serial output"); + return 1; + } + printf("Connected to the network. Opening a socket...\n"); + if (!net) { printf("Error! No network inteface found.\n"); return 0; @@ -44,8 +55,10 @@ if (r != 0) { printf("Error! socket.open() returned: %d\n", r); } - + r = socket.connect("api.ipify.org", 80); + //r = socket.connect("23.23.114.123", 80); + if (r != 0) { printf("Error! socket.connect() returned: %d\n", r); } @@ -69,16 +82,25 @@ remaining = 256; rcount = 0; p = buffer; + + r = socket.recv(p, remaining); + /* + // modified source..a bit strnage... while (0 < (r = socket.recv(p, remaining))) { p += r; rcount += r; remaining -= r; } + */ if (r < 0) { printf("Error! socket.recv() returned: %d\n", r); goto disconnect; } + p += r; + rcount += r; + remaining -= r; + printf("recv %d [%.*s]\n", rcount, strstr(buffer, "\r\n")-buffer, buffer); // The api.ipify.org service also gives us the device's external IP address