Example Get requests using Ethernet

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPSocket_HelloWorld by mbed official

Committer:
ndaniel7
Date:
Tue Dec 08 00:10:57 2015 +0000
Revision:
17:46186f7da7eb
Parent:
16:0a1035af04b4
Added example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
donatien 0:bb128f0e952f 2 #include "EthernetInterface.h"
ndaniel7 17:46186f7da7eb 3 #include <string>
donatien 0:bb128f0e952f 4
rquinn7 15:7a9850866be9 5 Serial pc(USBTX,USBRX);
rquinn7 15:7a9850866be9 6
rquinn7 15:7a9850866be9 7 extern "C" void mbed_mac_address(char * mac) {
rquinn7 15:7a9850866be9 8
rquinn7 15:7a9850866be9 9 // define your own MAC Address ba:d7:05:47:1f:c6
rquinn7 15:7a9850866be9 10 mac[0] = 0xba;
rquinn7 15:7a9850866be9 11 mac[1] = 0xd7;
rquinn7 15:7a9850866be9 12 mac[2] = 0x05;
rquinn7 15:7a9850866be9 13 mac[3] = 0x47;
rquinn7 15:7a9850866be9 14 mac[4] = 0x1f;
rquinn7 15:7a9850866be9 15 mac[5] = 0xc6;
rquinn7 15:7a9850866be9 16
rquinn7 15:7a9850866be9 17 };
rquinn7 15:7a9850866be9 18
emilmont 7:65188f4a8c25 19 int main() {
rquinn7 15:7a9850866be9 20 pc.baud(9600);
rquinn7 15:7a9850866be9 21 pc.printf("Running\n");
donatien 0:bb128f0e952f 22 EthernetInterface eth;
donatien 0:bb128f0e952f 23 eth.init(); //Use DHCP
rquinn7 15:7a9850866be9 24 wait(15);
donatien 0:bb128f0e952f 25 eth.connect();
rquinn7 15:7a9850866be9 26 wait(15);
rquinn7 15:7a9850866be9 27 pc.printf("MAC is %s\n", eth.getMACAddress());
rquinn7 15:7a9850866be9 28 pc.printf("IP Address is %s\n", eth.getIPAddress());
donatien 0:bb128f0e952f 29
emilmont 7:65188f4a8c25 30 TCPSocketConnection sock;
rquinn7 15:7a9850866be9 31 sock.connect("192.184.82.3", 5000);
donatien 0:bb128f0e952f 32
rquinn7 15:7a9850866be9 33 char http_cmd[300] = "GET /create_board?playerNum=1&gameNum=144&board=1111000000000000000000000000000000000000000000000000000000000000 HTTP/1.0\n\n";
emilmont 11:59dcefdda506 34 sock.send_all(http_cmd, sizeof(http_cmd)-1);
emilmont 7:65188f4a8c25 35
rquinn7 16:0a1035af04b4 36 //Instead of printing here, do what you did before to convert the string, and just append buffer to a string (below the break),
rquinn7 16:0a1035af04b4 37 // replacing pc.printf
rquinn7 16:0a1035af04b4 38 //Then we can do string find to snipe the values we want (have to do math to grab the right amount)
ndaniel7 17:46186f7da7eb 39 //Implemented example here, testStr now holds the received text (so you can search it)
ndaniel7 17:46186f7da7eb 40 string testStr = "";
rquinn7 15:7a9850866be9 41 char buffer[600];
donatien 0:bb128f0e952f 42 int ret;
emilmont 7:65188f4a8c25 43 while (true) {
emilmont 9:4757a976148d 44 ret = sock.receive(buffer, sizeof(buffer)-1);
emilmont 7:65188f4a8c25 45 if (ret <= 0)
emilmont 7:65188f4a8c25 46 break;
emilmont 9:4757a976148d 47 buffer[ret] = '\0';
rquinn7 15:7a9850866be9 48 pc.printf("Received %d chars from server:\n%s\n", ret, buffer);
ndaniel7 17:46186f7da7eb 49 string conv(buffer);
ndaniel7 17:46186f7da7eb 50 testStr = testStr + conv;
emilmont 7:65188f4a8c25 51 }
ndaniel7 17:46186f7da7eb 52 pc.printf("Stringified %s\n", testStr);
emilmont 7:65188f4a8c25 53 sock.close();
rquinn7 15:7a9850866be9 54 wait(0.2);
rquinn7 15:7a9850866be9 55 sock.connect("192.184.82.3", 5000);
rquinn7 15:7a9850866be9 56 wait(0.2);
rquinn7 15:7a9850866be9 57 strcpy(http_cmd, "GET /create_board?playerNum=2&gameNum=144&board=1111000000000000000000000000000000000000000000000000000000000000 HTTP/1.0\n\n");
rquinn7 15:7a9850866be9 58 pc.printf("Command is %s", http_cmd);
rquinn7 15:7a9850866be9 59 sock.send_all(http_cmd, sizeof(http_cmd)-1);
donatien 0:bb128f0e952f 60
rquinn7 15:7a9850866be9 61 while (true) {
rquinn7 15:7a9850866be9 62 ret = sock.receive(buffer, sizeof(buffer)-1);
rquinn7 15:7a9850866be9 63 if (ret <= 0)
rquinn7 15:7a9850866be9 64 break;
rquinn7 15:7a9850866be9 65 buffer[ret] = '\0';
rquinn7 15:7a9850866be9 66 pc.printf("Received %d chars from server:\n%s\n", ret, buffer);
rquinn7 15:7a9850866be9 67 }
rquinn7 15:7a9850866be9 68
rquinn7 15:7a9850866be9 69 sock.close();
rquinn7 15:7a9850866be9 70 wait(0.2);
rquinn7 15:7a9850866be9 71 sock.connect("192.184.82.3", 5000);
rquinn7 15:7a9850866be9 72 wait(0.2);
rquinn7 15:7a9850866be9 73 strcpy(http_cmd, "GET /polling?gameNum=144&playerNum=1 HTTP/1.0\n\n");
rquinn7 15:7a9850866be9 74 pc.printf("Command is %s", http_cmd);
rquinn7 15:7a9850866be9 75 sock.send_all(http_cmd, sizeof(http_cmd)-1);
rquinn7 15:7a9850866be9 76
rquinn7 15:7a9850866be9 77 while (true) {
rquinn7 15:7a9850866be9 78 ret = sock.receive(buffer, sizeof(buffer)-1);
rquinn7 15:7a9850866be9 79 if (ret <= 0)
rquinn7 15:7a9850866be9 80 break;
rquinn7 15:7a9850866be9 81 buffer[ret] = '\0';
rquinn7 15:7a9850866be9 82 pc.printf("Received %d chars from server:\n%s\n", ret, buffer);
rquinn7 15:7a9850866be9 83 }
rquinn7 15:7a9850866be9 84
rquinn7 15:7a9850866be9 85 sock.close();
rquinn7 15:7a9850866be9 86 wait(0.2);
rquinn7 15:7a9850866be9 87 sock.connect("192.184.82.3", 5000);
rquinn7 15:7a9850866be9 88 wait(0.2);
rquinn7 15:7a9850866be9 89 strcpy(http_cmd, "GET /fire?playerNum=1&gameNum=144&x=1&y=0 HTTP/1.0\n\n");
rquinn7 15:7a9850866be9 90 pc.printf("Command is %s", http_cmd);
rquinn7 15:7a9850866be9 91 sock.send_all(http_cmd, sizeof(http_cmd)-1);
rquinn7 15:7a9850866be9 92
rquinn7 15:7a9850866be9 93 while (true) {
rquinn7 15:7a9850866be9 94 ret = sock.receive(buffer, sizeof(buffer)-1);
rquinn7 15:7a9850866be9 95 if (ret <= 0)
rquinn7 15:7a9850866be9 96 break;
rquinn7 15:7a9850866be9 97 buffer[ret] = '\0';
rquinn7 15:7a9850866be9 98 pc.printf("Received %d chars from server:\n%s\n", ret, buffer);
rquinn7 15:7a9850866be9 99 }
rquinn7 15:7a9850866be9 100
rquinn7 15:7a9850866be9 101 sock.close();
emilmont 7:65188f4a8c25 102 eth.disconnect();
donatien 5:01f6c3e112af 103
emilmont 9:4757a976148d 104 while(1) {}
donatien 0:bb128f0e952f 105 }