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 mbed-os-examples

Result

  • Serial Terminal Log

/media/uploads/Bongjun/img021.png

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