DNS, DHCPClient, Http Client, TCP Client, GET
Dependencies: WIZnetInterface mbed
main.cpp@0:7d9fbdfdd41a, 2015-07-06 (annotated)
- Committer:
- embeddist
- Date:
- Mon Jul 06 05:14:41 2015 +0000
- Revision:
- 0:7d9fbdfdd41a
DNS Web Client
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
embeddist | 0:7d9fbdfdd41a | 1 | #include "mbed.h" |
embeddist | 0:7d9fbdfdd41a | 2 | #include "EthernetInterface.h" |
embeddist | 0:7d9fbdfdd41a | 3 | |
embeddist | 0:7d9fbdfdd41a | 4 | #define ECHO_SERVER_PORT 80 // HTTP defaults to port 80 |
embeddist | 0:7d9fbdfdd41a | 5 | char serverName[] = "openweathermap.org"; |
embeddist | 0:7d9fbdfdd41a | 6 | #define BUFFER_SIZE 2048 |
embeddist | 0:7d9fbdfdd41a | 7 | |
embeddist | 0:7d9fbdfdd41a | 8 | DigitalOut myled(LED1); |
embeddist | 0:7d9fbdfdd41a | 9 | |
embeddist | 0:7d9fbdfdd41a | 10 | // Initialize the Ethernet client library |
embeddist | 0:7d9fbdfdd41a | 11 | EthernetInterface eth; |
embeddist | 0:7d9fbdfdd41a | 12 | |
embeddist | 0:7d9fbdfdd41a | 13 | int main() { |
embeddist | 0:7d9fbdfdd41a | 14 | char http_cmd[]= "GET / HTTP/1.0\r\n\r\n"; |
embeddist | 0:7d9fbdfdd41a | 15 | char buffer[BUFFER_SIZE]; |
embeddist | 0:7d9fbdfdd41a | 16 | |
embeddist | 0:7d9fbdfdd41a | 17 | // Enter a MAC address for your controller below. |
embeddist | 0:7d9fbdfdd41a | 18 | uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x1D, 0x62, 0x11}; |
embeddist | 0:7d9fbdfdd41a | 19 | |
embeddist | 0:7d9fbdfdd41a | 20 | // initializing MAC address |
embeddist | 0:7d9fbdfdd41a | 21 | eth.init(mac_addr); |
embeddist | 0:7d9fbdfdd41a | 22 | |
embeddist | 0:7d9fbdfdd41a | 23 | // Check Ethenret Link |
embeddist | 0:7d9fbdfdd41a | 24 | if(eth.link() == true) |
embeddist | 0:7d9fbdfdd41a | 25 | printf("- Ethernet PHY Link-Done \r\n"); |
embeddist | 0:7d9fbdfdd41a | 26 | else |
embeddist | 0:7d9fbdfdd41a | 27 | printf("- Ethernet PHY Link- Fail\r\n"); |
embeddist | 0:7d9fbdfdd41a | 28 | |
embeddist | 0:7d9fbdfdd41a | 29 | // Start Ethernet connecting: Trying to get an IP address using DHCP |
embeddist | 0:7d9fbdfdd41a | 30 | if ( eth.connect() < 0 ){ |
embeddist | 0:7d9fbdfdd41a | 31 | printf("Fail - Ethernet Connecing"); |
embeddist | 0:7d9fbdfdd41a | 32 | }else{ |
embeddist | 0:7d9fbdfdd41a | 33 | // Print your local IP address: |
embeddist | 0:7d9fbdfdd41a | 34 | printf("IP=%s\n\r",eth.getIPAddress()); |
embeddist | 0:7d9fbdfdd41a | 35 | printf("MASK=%s\n\r",eth.getNetworkMask()); |
embeddist | 0:7d9fbdfdd41a | 36 | printf("GW=%s\n\r",eth.getGateway()); |
embeddist | 0:7d9fbdfdd41a | 37 | } |
embeddist | 0:7d9fbdfdd41a | 38 | |
embeddist | 0:7d9fbdfdd41a | 39 | // Initialize the TCPSocketConnection |
embeddist | 0:7d9fbdfdd41a | 40 | // with the IP address and port of the server |
embeddist | 0:7d9fbdfdd41a | 41 | // that you want to connect to (port 80 is default for HTTP): |
embeddist | 0:7d9fbdfdd41a | 42 | TCPSocketConnection sock; |
embeddist | 0:7d9fbdfdd41a | 43 | if(sock.connect(serverName, ECHO_SERVER_PORT)<0){ |
embeddist | 0:7d9fbdfdd41a | 44 | //you didn't get a connection to the server: |
embeddist | 0:7d9fbdfdd41a | 45 | printf("- connection failed\r\n"); |
embeddist | 0:7d9fbdfdd41a | 46 | }else{ |
embeddist | 0:7d9fbdfdd41a | 47 | printf("- connected\r\n"); |
embeddist | 0:7d9fbdfdd41a | 48 | wait(3); |
embeddist | 0:7d9fbdfdd41a | 49 | while( sock.is_connected()==false) |
embeddist | 0:7d9fbdfdd41a | 50 | { |
embeddist | 0:7d9fbdfdd41a | 51 | printf("."); |
embeddist | 0:7d9fbdfdd41a | 52 | } |
embeddist | 0:7d9fbdfdd41a | 53 | // Make & Send a HTTP request: |
embeddist | 0:7d9fbdfdd41a | 54 | sock.send_all(http_cmd, sizeof(http_cmd)); |
embeddist | 0:7d9fbdfdd41a | 55 | } |
embeddist | 0:7d9fbdfdd41a | 56 | |
embeddist | 0:7d9fbdfdd41a | 57 | while(true) { |
embeddist | 0:7d9fbdfdd41a | 58 | |
embeddist | 0:7d9fbdfdd41a | 59 | int n = sock.receive_all(buffer, BUFFER_SIZE); |
embeddist | 0:7d9fbdfdd41a | 60 | if(n<0) |
embeddist | 0:7d9fbdfdd41a | 61 | { |
embeddist | 0:7d9fbdfdd41a | 62 | break; |
embeddist | 0:7d9fbdfdd41a | 63 | } |
embeddist | 0:7d9fbdfdd41a | 64 | else |
embeddist | 0:7d9fbdfdd41a | 65 | { |
embeddist | 0:7d9fbdfdd41a | 66 | for(int i=0; i<n; i++) printf("%c",buffer[i]); |
embeddist | 0:7d9fbdfdd41a | 67 | } |
embeddist | 0:7d9fbdfdd41a | 68 | |
embeddist | 0:7d9fbdfdd41a | 69 | if(sock.is_connected()==false){ |
embeddist | 0:7d9fbdfdd41a | 70 | sock.close(); |
embeddist | 0:7d9fbdfdd41a | 71 | while(true) |
embeddist | 0:7d9fbdfdd41a | 72 | { |
embeddist | 0:7d9fbdfdd41a | 73 | //led blinky |
embeddist | 0:7d9fbdfdd41a | 74 | myled = 1; |
embeddist | 0:7d9fbdfdd41a | 75 | wait(0.2); |
embeddist | 0:7d9fbdfdd41a | 76 | myled = 0; |
embeddist | 0:7d9fbdfdd41a | 77 | wait(0.2); |
embeddist | 0:7d9fbdfdd41a | 78 | } |
embeddist | 0:7d9fbdfdd41a | 79 | } |
embeddist | 0:7d9fbdfdd41a | 80 | } |
embeddist | 0:7d9fbdfdd41a | 81 | sock.close(); |
embeddist | 0:7d9fbdfdd41a | 82 | } |