NS example

Committer:
sunsmile2015
Date:
Tue May 02 15:29:27 2017 +0000
Revision:
0:f40a402e1725
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunsmile2015 0:f40a402e1725 1 #include "mbed.h"
sunsmile2015 0:f40a402e1725 2 #include "EthernetInterface.h"
sunsmile2015 0:f40a402e1725 3
sunsmile2015 0:f40a402e1725 4 // Network interface
sunsmile2015 0:f40a402e1725 5 EthernetInterface net;
sunsmile2015 0:f40a402e1725 6
sunsmile2015 0:f40a402e1725 7 // Socket demo
sunsmile2015 0:f40a402e1725 8 int main() {
sunsmile2015 0:f40a402e1725 9 // Bring up the ethernet interface
sunsmile2015 0:f40a402e1725 10 printf("Ethernet socket example\n");
sunsmile2015 0:f40a402e1725 11 net.connect();
sunsmile2015 0:f40a402e1725 12
sunsmile2015 0:f40a402e1725 13 // Show the network address
sunsmile2015 0:f40a402e1725 14 const char *ip = net.get_ip_address();
sunsmile2015 0:f40a402e1725 15 const char *netmask = net.get_netmask();
sunsmile2015 0:f40a402e1725 16 const char *gateway = net.get_gateway();
sunsmile2015 0:f40a402e1725 17 printf("IP address: %s\n", ip ? ip : "None");
sunsmile2015 0:f40a402e1725 18 printf("Netmask: %s\n", netmask ? netmask : "None");
sunsmile2015 0:f40a402e1725 19 printf("Gateway: %s\n", gateway ? gateway : "None");
sunsmile2015 0:f40a402e1725 20
sunsmile2015 0:f40a402e1725 21 // Open a socket on the network interface, and create a TCP connection to mbed.org
sunsmile2015 0:f40a402e1725 22 TCPSocket socket;
sunsmile2015 0:f40a402e1725 23 //UDPSocket udp;
sunsmile2015 0:f40a402e1725 24 //udp.open(&net);
sunsmile2015 0:f40a402e1725 25 //udp.bind(56830);
sunsmile2015 0:f40a402e1725 26 //udp.sendto();
sunsmile2015 0:f40a402e1725 27 //udp.recvfrom();
sunsmile2015 0:f40a402e1725 28 socket.open(&net);
sunsmile2015 0:f40a402e1725 29 socket.connect("api.ipify.org", 80);
sunsmile2015 0:f40a402e1725 30 char *buffer = new char[256];
sunsmile2015 0:f40a402e1725 31
sunsmile2015 0:f40a402e1725 32 // Send an HTTP request
sunsmile2015 0:f40a402e1725 33 strcpy(buffer, "GET / HTTP/1.1\r\nHost: api.ipify.org\r\n\r\n");
sunsmile2015 0:f40a402e1725 34 int scount = socket.send(buffer, strlen(buffer));
sunsmile2015 0:f40a402e1725 35 printf("sent %d [%.*s]\n", scount, strstr(buffer, "\r\n")-buffer, buffer);
sunsmile2015 0:f40a402e1725 36
sunsmile2015 0:f40a402e1725 37 // Recieve an HTTP response and print out the response line
sunsmile2015 0:f40a402e1725 38 int rcount = socket.recv(buffer, 256);
sunsmile2015 0:f40a402e1725 39 printf("recv %d [%.*s]\n", rcount, strstr(buffer, "\r\n")-buffer, buffer);
sunsmile2015 0:f40a402e1725 40
sunsmile2015 0:f40a402e1725 41 // The api.ipify.org service also gives us the device's external IP address
sunsmile2015 0:f40a402e1725 42 const char *payload = strstr(buffer, "\r\n\r\n")+4;
sunsmile2015 0:f40a402e1725 43 printf("External IP address: %.*s\n", rcount-(payload-buffer), payload);
sunsmile2015 0:f40a402e1725 44
sunsmile2015 0:f40a402e1725 45 // Close the socket to return its memory and bring down the network interface
sunsmile2015 0:f40a402e1725 46 socket.close();
sunsmile2015 0:f40a402e1725 47 delete[] buffer;
sunsmile2015 0:f40a402e1725 48
sunsmile2015 0:f40a402e1725 49 // Bring down the ethernet interface
sunsmile2015 0:f40a402e1725 50 net.disconnect();
sunsmile2015 0:f40a402e1725 51 printf("Done\n");
sunsmile2015 0:f40a402e1725 52 }