二期c++接口

Dependencies:   EthernetInterface mbed-rtos mbed uniqueCPUID

Fork of bcsdk by Heng Well

Committer:
webmaster
Date:
Fri Nov 03 01:07:32 2017 +0000
Revision:
10:aabd720e632c
Parent:
9:d7468574ef8f
Child:
11:6d9cefb14158
publish v0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsteiert 0:28bc7ce77e20 1 #include "mbed.h"
gsteiert 0:28bc7ce77e20 2 #include "EthernetInterface.h"
gsteiert 0:28bc7ce77e20 3 #include "SDFileSystem.h"
gsteiert 0:28bc7ce77e20 4 #include <stdio.h>
webmaster 9:d7468574ef8f 5 #include "uniqueCPUID.h"
webmaster 8:f2a567ee3a46 6
webmaster 8:f2a567ee3a46 7 #include <iostream>
webmaster 8:f2a567ee3a46 8 #include <string>
webmaster 8:f2a567ee3a46 9 #include "UnitTest.h"
webmaster 8:f2a567ee3a46 10 //#include "BlockChain.h"
webmaster 8:f2a567ee3a46 11 #include "MockHsm.h"
webmaster 10:aabd720e632c 12 #include "Asset.h"
webmaster 10:aabd720e632c 13 #include "Transaction.h"
webmaster 10:aabd720e632c 14 #include "Account.h"
webmaster 10:aabd720e632c 15 #include "Key.h"
webmaster 8:f2a567ee3a46 16
webmaster 8:f2a567ee3a46 17 using namespace std;
gsteiert 0:28bc7ce77e20 18
gsteiert 0:28bc7ce77e20 19 #define HTTPD_SERVER_PORT 80
gsteiert 0:28bc7ce77e20 20 #define HTTPD_MAX_REQ_LENGTH 1023
gsteiert 0:28bc7ce77e20 21 #define HTTPD_MAX_HDR_LENGTH 255
gsteiert 0:28bc7ce77e20 22 #define HTTPD_MAX_FNAME_LENGTH 127
gsteiert 3:4f71a37a1ed2 23 #define HTTPD_MAX_DNAME_LENGTH 127
gsteiert 3:4f71a37a1ed2 24
webmaster 10:aabd720e632c 25 #define DEBUG_LOG 1
webmaster 10:aabd720e632c 26
webmaster 8:f2a567ee3a46 27 const char* ECHO_SERVER_ADDRESS = "192.168.31.185";
webmaster 8:f2a567ee3a46 28 const int ECHO_SERVER_PORT = 10003;
webmaster 8:f2a567ee3a46 29
gsteiert 3:4f71a37a1ed2 30 Serial uart(USBTX, USBRX);
gsteiert 0:28bc7ce77e20 31
gsteiert 6:ca17ce165ebc 32 //SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD
gsteiert 5:27b09a0f3fb6 33 //SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD
gsteiert 6:ca17ce165ebc 34 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
gsteiert 3:4f71a37a1ed2 35
gsteiert 0:28bc7ce77e20 36 EthernetInterface eth;
gsteiert 0:28bc7ce77e20 37 TCPSocketServer server;
gsteiert 0:28bc7ce77e20 38 TCPSocketConnection client;
webmaster 8:f2a567ee3a46 39 TCPSocketConnection my_client;
gsteiert 0:28bc7ce77e20 40
gsteiert 0:28bc7ce77e20 41 char buffer[HTTPD_MAX_REQ_LENGTH+1];
gsteiert 0:28bc7ce77e20 42 char httpHeader[HTTPD_MAX_HDR_LENGTH+1];
gsteiert 3:4f71a37a1ed2 43 char fileName[HTTPD_MAX_FNAME_LENGTH+1];
gsteiert 3:4f71a37a1ed2 44 char dirName[HTTPD_MAX_DNAME_LENGTH+1];
gsteiert 0:28bc7ce77e20 45 char *uristr;
gsteiert 0:28bc7ce77e20 46 char *eou;
gsteiert 0:28bc7ce77e20 47 char *qrystr;
gsteiert 0:28bc7ce77e20 48
gsteiert 0:28bc7ce77e20 49 FILE *fp;
gsteiert 0:28bc7ce77e20 50 int rdCnt;
gsteiert 0:28bc7ce77e20 51
webmaster 8:f2a567ee3a46 52 // function declation
webmaster 8:f2a567ee3a46 53 int test_socket_client(void);
webmaster 8:f2a567ee3a46 54 int socket_init();
webmaster 8:f2a567ee3a46 55 int socket_fini();
webmaster 8:f2a567ee3a46 56
webmaster 10:aabd720e632c 57
webmaster 9:d7468574ef8f 58 void test_uuid()
webmaster 9:d7468574ef8f 59 {
webmaster 9:d7468574ef8f 60 char pUUID[128] = {0};
webmaster 9:d7468574ef8f 61 getUniqueIDAsStr(pUUID);
webmaster 9:d7468574ef8f 62 printf("CPUID = %s \n",pUUID);
webmaster 9:d7468574ef8f 63 //printUniqueId(uart);
webmaster 9:d7468574ef8f 64 }
webmaster 8:f2a567ee3a46 65
webmaster 10:aabd720e632c 66 int test_MockHsm()
webmaster 10:aabd720e632c 67 {
webmaster 10:aabd720e632c 68 MockHsm mh;
webmaster 10:aabd720e632c 69 mh.setAlias("t_key_6");
webmaster 10:aabd720e632c 70 cout<<mh.getAlias()<<endl;
webmaster 10:aabd720e632c 71 cout<<mh.createKey()<<endl;
webmaster 10:aabd720e632c 72 cout<< mh.listKeys() <<endl;
webmaster 10:aabd720e632c 73 return 0;
webmaster 10:aabd720e632c 74 }
webmaster 10:aabd720e632c 75
webmaster 10:aabd720e632c 76 int test_Asset()
webmaster 10:aabd720e632c 77 {
webmaster 10:aabd720e632c 78 Asset asset;
webmaster 10:aabd720e632c 79 asset.setAlias("t_asset_6");
webmaster 10:aabd720e632c 80
webmaster 10:aabd720e632c 81 cout<< asset.createAsset() << endl;
webmaster 10:aabd720e632c 82 cout<< asset.listAssets() << endl;
webmaster 10:aabd720e632c 83
webmaster 10:aabd720e632c 84
webmaster 10:aabd720e632c 85 return 0;
webmaster 10:aabd720e632c 86 }
webmaster 10:aabd720e632c 87
webmaster 10:aabd720e632c 88 int test_Account()
webmaster 10:aabd720e632c 89 {
webmaster 10:aabd720e632c 90 Key key;
webmaster 10:aabd720e632c 91 key.setAlias("t_key");
webmaster 10:aabd720e632c 92 key.listKeys();
webmaster 10:aabd720e632c 93
webmaster 10:aabd720e632c 94 Account act(key);
webmaster 10:aabd720e632c 95 act.setAlias("t_acc_8");
webmaster 10:aabd720e632c 96 act.createAccount();
webmaster 10:aabd720e632c 97 act.listAccounts();
webmaster 10:aabd720e632c 98
webmaster 10:aabd720e632c 99 return 0;
webmaster 10:aabd720e632c 100 }
webmaster 10:aabd720e632c 101
webmaster 10:aabd720e632c 102 int test_transaction(string type)
webmaster 10:aabd720e632c 103 {
webmaster 10:aabd720e632c 104 Transaction ts;
webmaster 10:aabd720e632c 105 //cout << ts.buildTransaction() << endl;
webmaster 10:aabd720e632c 106 ts.buildTransaction(type);
webmaster 10:aabd720e632c 107 ts.signTransaction();
webmaster 10:aabd720e632c 108 ts.submitTransaction();
webmaster 10:aabd720e632c 109 ts.listTransactions();
webmaster 10:aabd720e632c 110 return 0;
webmaster 10:aabd720e632c 111 }
webmaster 10:aabd720e632c 112
webmaster 10:aabd720e632c 113 int test_transaction()
webmaster 10:aabd720e632c 114 {
webmaster 10:aabd720e632c 115 vector<Actions> vActions;
webmaster 10:aabd720e632c 116 Actions act;
webmaster 10:aabd720e632c 117 MbedJSONValue reference_data;
webmaster 10:aabd720e632c 118
webmaster 10:aabd720e632c 119 act.accounts_alias = "t_acc_1";
webmaster 10:aabd720e632c 120 act.amount = 51;
webmaster 10:aabd720e632c 121 act.asset_alias = "t_asset";
webmaster 10:aabd720e632c 122 act.reference_data = reference_data;
webmaster 10:aabd720e632c 123 act.type = "spend_account";
webmaster 10:aabd720e632c 124 vActions.push_back(act);
webmaster 10:aabd720e632c 125
webmaster 10:aabd720e632c 126 Actions act1 = {"t_acc_2", "t_asset", 49, reference_data, "spend_account" };
webmaster 10:aabd720e632c 127 Actions act2 = {"tom", "t_asset", 80, reference_data, "control_account"};
webmaster 10:aabd720e632c 128 Actions act3 = {"Jerry", "t_asset", 20, reference_data, "control_account"};
webmaster 10:aabd720e632c 129
webmaster 10:aabd720e632c 130 vActions.push_back(act1);
webmaster 10:aabd720e632c 131 vActions.push_back(act2);
webmaster 10:aabd720e632c 132 vActions.push_back(act3);
webmaster 10:aabd720e632c 133 printf("=============2========\r\n");
webmaster 10:aabd720e632c 134 Transaction ts;
webmaster 10:aabd720e632c 135 ts.buildTransaction(vActions);
webmaster 10:aabd720e632c 136 ts.signTransaction();
webmaster 10:aabd720e632c 137 ts.submitTransaction();
webmaster 10:aabd720e632c 138 ts.listTransactions();
webmaster 10:aabd720e632c 139
webmaster 10:aabd720e632c 140 return 0;
webmaster 10:aabd720e632c 141 }
webmaster 10:aabd720e632c 142
webmaster 10:aabd720e632c 143
webmaster 8:f2a567ee3a46 144 int main(void)
webmaster 8:f2a567ee3a46 145 {
webmaster 8:f2a567ee3a46 146 printf("main start\n");
webmaster 8:f2a567ee3a46 147
webmaster 9:d7468574ef8f 148 test_uuid();
webmaster 10:aabd720e632c 149
webmaster 9:d7468574ef8f 150
webmaster 8:f2a567ee3a46 151 socket_init();
webmaster 8:f2a567ee3a46 152
webmaster 8:f2a567ee3a46 153 test_MockHsm();
webmaster 10:aabd720e632c 154 test_Asset();
webmaster 10:aabd720e632c 155 test_Account();
webmaster 10:aabd720e632c 156
webmaster 10:aabd720e632c 157 //char isContinue = 'y';
webmaster 10:aabd720e632c 158 // do
webmaster 10:aabd720e632c 159 //{
webmaster 10:aabd720e632c 160 string type = "spend_account";
webmaster 10:aabd720e632c 161 //string type = "issue";
webmaster 10:aabd720e632c 162 //test_transaction(type);
webmaster 10:aabd720e632c 163 test_transaction();
webmaster 10:aabd720e632c 164 printf("=============5========\n");
webmaster 10:aabd720e632c 165 // }while(1);
webmaster 10:aabd720e632c 166 //}while (isContinue = getch() != 'q');
webmaster 8:f2a567ee3a46 167
webmaster 10:aabd720e632c 168
webmaster 10:aabd720e632c 169 //test_socket_client();
webmaster 8:f2a567ee3a46 170
webmaster 8:f2a567ee3a46 171 socket_fini();
webmaster 8:f2a567ee3a46 172
webmaster 8:f2a567ee3a46 173 printf("main end\n");
webmaster 8:f2a567ee3a46 174 return 0;
webmaster 8:f2a567ee3a46 175 }
webmaster 8:f2a567ee3a46 176
webmaster 8:f2a567ee3a46 177 int socket_init()
webmaster 8:f2a567ee3a46 178 {
webmaster 8:f2a567ee3a46 179 int ret = 0;
webmaster 8:f2a567ee3a46 180 // EthernetInterface eth;
webmaster 8:f2a567ee3a46 181 printf("Initializing Ethernet\n");
webmaster 8:f2a567ee3a46 182 ret = eth.init(); //Use DHCP
webmaster 8:f2a567ee3a46 183 //eth.init("192.168.31.186", "255.255.255.0", "192.168.31.1"); //Use static ip
webmaster 8:f2a567ee3a46 184 printf("Connecting\n");
webmaster 8:f2a567ee3a46 185 ret = eth.connect();
webmaster 8:f2a567ee3a46 186 printf("IP Address is %s\n", eth.getIPAddress());
webmaster 8:f2a567ee3a46 187
webmaster 8:f2a567ee3a46 188 return ret;
webmaster 8:f2a567ee3a46 189 }
webmaster 8:f2a567ee3a46 190
webmaster 8:f2a567ee3a46 191 int socket_fini()
webmaster 8:f2a567ee3a46 192 {
webmaster 8:f2a567ee3a46 193 return eth.disconnect();
webmaster 8:f2a567ee3a46 194 }
webmaster 8:f2a567ee3a46 195
webmaster 8:f2a567ee3a46 196 int test_socket_client(void)
webmaster 8:f2a567ee3a46 197 {
webmaster 8:f2a567ee3a46 198 TCPSocketConnection socket;
webmaster 8:f2a567ee3a46 199 while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) {
webmaster 8:f2a567ee3a46 200 printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
webmaster 8:f2a567ee3a46 201 wait(1);
webmaster 8:f2a567ee3a46 202 }
webmaster 8:f2a567ee3a46 203 printf("Connected to Server at %s\n",ECHO_SERVER_ADDRESS);
webmaster 8:f2a567ee3a46 204
webmaster 8:f2a567ee3a46 205 // Send message to server
webmaster 8:f2a567ee3a46 206 char hello[] = "Hello World";
webmaster 8:f2a567ee3a46 207 printf("Sending message to Server : '%s' \n",hello);
webmaster 8:f2a567ee3a46 208 socket.send_all(hello, sizeof(hello) - 1);
webmaster 8:f2a567ee3a46 209
webmaster 8:f2a567ee3a46 210 // Receive message from server
webmaster 8:f2a567ee3a46 211 char buf[256];
webmaster 8:f2a567ee3a46 212 int n = socket.receive(buf, 256);
webmaster 8:f2a567ee3a46 213 buf[n] = '\0';
webmaster 8:f2a567ee3a46 214 printf("Received message from server: '%s'\n", buf);
webmaster 8:f2a567ee3a46 215
webmaster 8:f2a567ee3a46 216 // Clean up
webmaster 8:f2a567ee3a46 217 socket.close();
webmaster 8:f2a567ee3a46 218
webmaster 8:f2a567ee3a46 219 return 0;
webmaster 8:f2a567ee3a46 220 }
webmaster 8:f2a567ee3a46 221
gsteiert 0:28bc7ce77e20 222 void get_file(char* uri)
gsteiert 0:28bc7ce77e20 223 {
gsteiert 3:4f71a37a1ed2 224 uart.printf("get_file %s\n", uri);
gsteiert 0:28bc7ce77e20 225 char *lstchr = strrchr(uri, NULL) -1;
gsteiert 0:28bc7ce77e20 226 if ('/' == *lstchr) {
gsteiert 3:4f71a37a1ed2 227 uart.printf("Open directory /sd%s\n", uri);
gsteiert 0:28bc7ce77e20 228 *lstchr = 0;
gsteiert 3:4f71a37a1ed2 229 sprintf(fileName, "/sd%s", uri);
gsteiert 3:4f71a37a1ed2 230 DIR *d = opendir(fileName);
gsteiert 0:28bc7ce77e20 231 if (d != NULL) {
gsteiert 0:28bc7ce77e20 232 sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n");
gsteiert 0:28bc7ce77e20 233 client.send(httpHeader,strlen(httpHeader));
gsteiert 3:4f71a37a1ed2 234 sprintf(httpHeader,"<html><head><title>Directory Listing</title></head><body><h1>%s Directory Listing</h1><ul>", uri);
gsteiert 0:28bc7ce77e20 235 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 236 struct dirent *p;
gsteiert 0:28bc7ce77e20 237 while((p = readdir(d)) != NULL) {
gsteiert 3:4f71a37a1ed2 238 sprintf(dirName, "%s/%s", fileName, p->d_name);
gsteiert 3:4f71a37a1ed2 239 uart.printf("%s\n", dirName);
gsteiert 3:4f71a37a1ed2 240 DIR *subDir = opendir(dirName);
gsteiert 3:4f71a37a1ed2 241 if (subDir != NULL) {
gsteiert 3:4f71a37a1ed2 242 sprintf(httpHeader,"<li><a href=\"./%s/\">%s/</a></li>", p->d_name, p->d_name);
gsteiert 3:4f71a37a1ed2 243 } else {
gsteiert 3:4f71a37a1ed2 244 sprintf(httpHeader,"<li><a href=\"./%s\">%s</a></li>", p->d_name, p->d_name);
gsteiert 3:4f71a37a1ed2 245 }
gsteiert 0:28bc7ce77e20 246 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 247 }
gsteiert 0:28bc7ce77e20 248 }
gsteiert 0:28bc7ce77e20 249 closedir(d);
gsteiert 3:4f71a37a1ed2 250 uart.printf("Directory closed\n");
gsteiert 0:28bc7ce77e20 251 sprintf(httpHeader,"</ul></body></html>");
gsteiert 0:28bc7ce77e20 252 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 253 } else {
gsteiert 3:4f71a37a1ed2 254 sprintf(fileName, "/sd%s", uri);
gsteiert 3:4f71a37a1ed2 255 fp = fopen(fileName, "r");
gsteiert 0:28bc7ce77e20 256 if (fp == NULL) {
gsteiert 7:04744a9ce2b9 257 uart.printf("File not found\n");
gsteiert 0:28bc7ce77e20 258 sprintf(httpHeader,"HTTP/1.1 404 Not Found \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
gsteiert 0:28bc7ce77e20 259 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 260 client.send(uri,strlen(uri));
gsteiert 0:28bc7ce77e20 261 } else {
gsteiert 7:04744a9ce2b9 262 uart.printf("Sending: header");
gsteiert 0:28bc7ce77e20 263 sprintf(httpHeader,"HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Close\r\n\r\n");
gsteiert 0:28bc7ce77e20 264 client.send(httpHeader,strlen(httpHeader));
gsteiert 7:04744a9ce2b9 265 uart.printf(" file");
gsteiert 0:28bc7ce77e20 266 while ((rdCnt = fread(buffer, sizeof( char ), 1024, fp)) == 1024) {
gsteiert 0:28bc7ce77e20 267 client.send(buffer, rdCnt);
gsteiert 7:04744a9ce2b9 268 uart.printf(".");
gsteiert 0:28bc7ce77e20 269 }
gsteiert 0:28bc7ce77e20 270 client.send(buffer, rdCnt);
gsteiert 0:28bc7ce77e20 271 fclose(fp);
gsteiert 7:04744a9ce2b9 272 uart.printf("done\n");
gsteiert 0:28bc7ce77e20 273 }
gsteiert 0:28bc7ce77e20 274 }
gsteiert 0:28bc7ce77e20 275 }
gsteiert 0:28bc7ce77e20 276
webmaster 8:f2a567ee3a46 277 int main_1 (void)
gsteiert 0:28bc7ce77e20 278 {
gsteiert 3:4f71a37a1ed2 279 // Serial Interface eth;
gsteiert 3:4f71a37a1ed2 280 uart.baud(115200);
gsteiert 5:27b09a0f3fb6 281 uart.printf("Initializing\n");
gsteiert 3:4f71a37a1ed2 282
gsteiert 3:4f71a37a1ed2 283 // Check File System
gsteiert 5:27b09a0f3fb6 284 uart.printf("Checking File System\n");
gsteiert 3:4f71a37a1ed2 285 DIR *d = opendir("/sd/");
gsteiert 3:4f71a37a1ed2 286 if (d != NULL) {
gsteiert 3:4f71a37a1ed2 287 uart.printf("SD Card Present\n");
gsteiert 3:4f71a37a1ed2 288 } else {
gsteiert 3:4f71a37a1ed2 289 uart.printf("SD Card Root Directory Not Found\n");
gsteiert 3:4f71a37a1ed2 290 }
gsteiert 3:4f71a37a1ed2 291
gsteiert 0:28bc7ce77e20 292 // EthernetInterface eth;
gsteiert 5:27b09a0f3fb6 293 uart.printf("Initializing Ethernet\n");
webmaster 8:f2a567ee3a46 294 //eth.init(); //Use DHCP
webmaster 8:f2a567ee3a46 295 eth.init("192.168.31.186", "255.255.255.0", "192.168.31.1"); //Use
gsteiert 5:27b09a0f3fb6 296 uart.printf("Connecting\n");
gsteiert 0:28bc7ce77e20 297 eth.connect();
gsteiert 3:4f71a37a1ed2 298 uart.printf("IP Address is %s\n", eth.getIPAddress());
webmaster 8:f2a567ee3a46 299
webmaster 8:f2a567ee3a46 300 //test socket client
webmaster 8:f2a567ee3a46 301 //my_client.connect("192.168.31.185",10003);
webmaster 8:f2a567ee3a46 302 //my_client.send_all("hello world",11);
webmaster 8:f2a567ee3a46 303
webmaster 8:f2a567ee3a46 304 TCPSocketConnection socket;
webmaster 8:f2a567ee3a46 305 while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) {
webmaster 8:f2a567ee3a46 306 uart.printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
webmaster 8:f2a567ee3a46 307 wait(1);
webmaster 8:f2a567ee3a46 308 }
webmaster 8:f2a567ee3a46 309 uart.printf("Connected to Server at %s\n",ECHO_SERVER_ADDRESS);
webmaster 8:f2a567ee3a46 310
webmaster 8:f2a567ee3a46 311 // Send message to server
webmaster 8:f2a567ee3a46 312 char hello[] = "Hello World";
webmaster 8:f2a567ee3a46 313 uart.printf("Sending message to Server : '%s' \n",hello);
webmaster 8:f2a567ee3a46 314 socket.send_all(hello, sizeof(hello) - 1);
webmaster 8:f2a567ee3a46 315
webmaster 8:f2a567ee3a46 316 // Receive message from server
webmaster 8:f2a567ee3a46 317 char buf[256];
webmaster 8:f2a567ee3a46 318 int n = socket.receive(buf, 256);
webmaster 8:f2a567ee3a46 319 buf[n] = '\0';
webmaster 8:f2a567ee3a46 320 uart.printf("Received message from server: '%s'\n", buf);
webmaster 8:f2a567ee3a46 321
webmaster 8:f2a567ee3a46 322 // Clean up
webmaster 8:f2a567ee3a46 323 socket.close();
webmaster 8:f2a567ee3a46 324 ////////////////////////////////////////////////////////////////////////////
gsteiert 0:28bc7ce77e20 325
gsteiert 0:28bc7ce77e20 326 // TCPSocketServer server;
gsteiert 0:28bc7ce77e20 327 server.bind(HTTPD_SERVER_PORT);
gsteiert 0:28bc7ce77e20 328 server.listen();
gsteiert 5:27b09a0f3fb6 329 uart.printf("Server Listening\n");
gsteiert 0:28bc7ce77e20 330
gsteiert 0:28bc7ce77e20 331 while (true) {
gsteiert 3:4f71a37a1ed2 332 uart.printf("\nWait for new connection...\r\n");
gsteiert 0:28bc7ce77e20 333 server.accept(client);
gsteiert 0:28bc7ce77e20 334 client.set_blocking(false, 1500); // Timeout after (1.5)s
webmaster 8:f2a567ee3a46 335
webmaster 8:f2a567ee3a46 336 my_client.send_all("hello world",11);
gsteiert 0:28bc7ce77e20 337
gsteiert 3:4f71a37a1ed2 338 uart.printf("Connection from: %s\r\n", client.get_address());
gsteiert 0:28bc7ce77e20 339 while (true) {
gsteiert 0:28bc7ce77e20 340 int n = client.receive(buffer, sizeof(buffer));
gsteiert 0:28bc7ce77e20 341 if (n <= 0) break;
gsteiert 3:4f71a37a1ed2 342 uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,n,buffer);
gsteiert 0:28bc7ce77e20 343 if (n >= 1024) {
gsteiert 0:28bc7ce77e20 344 sprintf(httpHeader,"HTTP/1.1 413 Request Entity Too Large \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
gsteiert 0:28bc7ce77e20 345 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 346 client.send(buffer,n);
gsteiert 0:28bc7ce77e20 347 break;
gsteiert 0:28bc7ce77e20 348 } else {
gsteiert 0:28bc7ce77e20 349 buffer[n]=0;
gsteiert 0:28bc7ce77e20 350 }
gsteiert 0:28bc7ce77e20 351 if (!strncmp(buffer, "GET ", 4)) {
gsteiert 0:28bc7ce77e20 352 uristr = buffer + 4;
gsteiert 0:28bc7ce77e20 353 eou = strstr(uristr, " ");
gsteiert 0:28bc7ce77e20 354 if (eou == NULL) {
gsteiert 0:28bc7ce77e20 355 sprintf(httpHeader,"HTTP/1.1 400 Bad Request \r\nContent-Type: text\r\nConnection: Close\r\n\r\n");
gsteiert 0:28bc7ce77e20 356 client.send(httpHeader,strlen(httpHeader));
gsteiert 0:28bc7ce77e20 357 client.send(buffer,n);
gsteiert 0:28bc7ce77e20 358 } else {
gsteiert 0:28bc7ce77e20 359 *eou = 0;
gsteiert 3:4f71a37a1ed2 360 get_file(uristr);
gsteiert 0:28bc7ce77e20 361 }
gsteiert 0:28bc7ce77e20 362 }
gsteiert 0:28bc7ce77e20 363 }
gsteiert 0:28bc7ce77e20 364
gsteiert 0:28bc7ce77e20 365 client.close();
gsteiert 0:28bc7ce77e20 366 }
gsteiert 0:28bc7ce77e20 367 }
webmaster 8:f2a567ee3a46 368
webmaster 8:f2a567ee3a46 369
webmaster 8:f2a567ee3a46 370 int main_2() {
webmaster 8:f2a567ee3a46 371 // Serial Interface eth;
webmaster 8:f2a567ee3a46 372 uart.baud(115200);
webmaster 8:f2a567ee3a46 373 uart.printf("Initializing\n");
webmaster 8:f2a567ee3a46 374
webmaster 8:f2a567ee3a46 375 EthernetInterface eth;
webmaster 8:f2a567ee3a46 376 eth.init(); //Use DHCP
webmaster 8:f2a567ee3a46 377 eth.connect();
webmaster 8:f2a567ee3a46 378 printf("\nClient IP Address is %s\n", eth.getIPAddress());
webmaster 8:f2a567ee3a46 379
webmaster 8:f2a567ee3a46 380 // Connect to Server
webmaster 8:f2a567ee3a46 381 TCPSocketConnection socket;
webmaster 8:f2a567ee3a46 382 while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) {
webmaster 8:f2a567ee3a46 383 printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
webmaster 8:f2a567ee3a46 384 wait(1);
webmaster 8:f2a567ee3a46 385 }
webmaster 8:f2a567ee3a46 386 printf("Connected to Server at %s\n",ECHO_SERVER_ADDRESS);
webmaster 8:f2a567ee3a46 387
webmaster 8:f2a567ee3a46 388 // Send message to server
webmaster 8:f2a567ee3a46 389 char hello[] = "Hello World";
webmaster 8:f2a567ee3a46 390 printf("Sending message to Server : '%s' \n",hello);
webmaster 8:f2a567ee3a46 391 socket.send_all(hello, sizeof(hello) - 1);
webmaster 8:f2a567ee3a46 392
webmaster 8:f2a567ee3a46 393 // Receive message from server
webmaster 8:f2a567ee3a46 394 char buf[256];
webmaster 8:f2a567ee3a46 395 int n = socket.receive(buf, 256);
webmaster 8:f2a567ee3a46 396 buf[n] = '\0';
webmaster 8:f2a567ee3a46 397 printf("Received message from server: '%s'\n", buf);
webmaster 8:f2a567ee3a46 398
webmaster 8:f2a567ee3a46 399 // Clean up
webmaster 8:f2a567ee3a46 400 socket.close();
webmaster 8:f2a567ee3a46 401 eth.disconnect();
webmaster 8:f2a567ee3a46 402
webmaster 8:f2a567ee3a46 403 while(true) {}
webmaster 8:f2a567ee3a46 404 }