Ethernet and TCP

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPEchoServer by Mbed

Committer:
lachu
Date:
Thu Jan 12 19:11:37 2017 +0000
Revision:
8:475898cdb7d4
Parent:
7:a5ead1402704
Child:
9:9224b02b6192
upload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:38cbb854d85f 1 #include "mbed.h"
emilmont 1:5cebe0e38cd2 2 #include "EthernetInterface.h"
lachu 8:475898cdb7d4 3 #include <string>
emilmont 1:5cebe0e38cd2 4
emilmont 3:36fd3cfad85a 5 #define ECHO_SERVER_PORT 7
emilmont 3:36fd3cfad85a 6
lachu 8:475898cdb7d4 7 DigitalOut led1(LED1);
lachu 8:475898cdb7d4 8 DigitalOut led2(LED2);
lachu 8:475898cdb7d4 9 DigitalOut led3(LED3);
lachu 8:475898cdb7d4 10
emilmont 1:5cebe0e38cd2 11 int main (void) {
lachu 8:475898cdb7d4 12 led1 = !led1;
lachu 8:475898cdb7d4 13 led2 = !led2;
lachu 8:475898cdb7d4 14 led3 = !led3;
lachu 8:475898cdb7d4 15
emilmont 1:5cebe0e38cd2 16 EthernetInterface eth;
emilmont 1:5cebe0e38cd2 17 eth.init(); //Use DHCP
emilmont 1:5cebe0e38cd2 18 eth.connect();
mbedAustin 7:a5ead1402704 19 printf("\nServer IP Address is %s\n", eth.getIPAddress());
emilmont 1:5cebe0e38cd2 20
emilmont 1:5cebe0e38cd2 21 TCPSocketServer server;
emilmont 3:36fd3cfad85a 22 server.bind(ECHO_SERVER_PORT);
emilmont 3:36fd3cfad85a 23 server.listen();
emilmont 1:5cebe0e38cd2 24
emilmont 1:5cebe0e38cd2 25 while (true) {
emilmont 1:5cebe0e38cd2 26 printf("\nWait for new connection...\n");
emilmont 1:5cebe0e38cd2 27 TCPSocketConnection client;
emilmont 1:5cebe0e38cd2 28 server.accept(client);
lachu 8:475898cdb7d4 29 client.set_blocking(false, 15000); // Timeout after (1.5)s
emilmont 1:5cebe0e38cd2 30
emilmont 1:5cebe0e38cd2 31 printf("Connection from: %s\n", client.get_address());
emilmont 1:5cebe0e38cd2 32 char buffer[256];
lachu 8:475898cdb7d4 33 //std::string myCommand;
lachu 8:475898cdb7d4 34 //myCommand = buffer;
emilmont 1:5cebe0e38cd2 35 while (true) {
lachu 8:475898cdb7d4 36 printf("TEST1\n");
emilmont 3:36fd3cfad85a 37 int n = client.receive(buffer, sizeof(buffer));
lachu 8:475898cdb7d4 38 //if (n <= 0) break;
emilmont 1:5cebe0e38cd2 39
mbedAustin 7:a5ead1402704 40 printf("Received message from Client :'%s'\n",buffer);
mbedAustin 7:a5ead1402704 41
lachu 8:475898cdb7d4 42 client.send_all(buffer, n);
lachu 8:475898cdb7d4 43 buffer[n] = '\0';
lachu 8:475898cdb7d4 44
lachu 8:475898cdb7d4 45 printf("Variable n is: %d\n", n);
mbedAustin 7:a5ead1402704 46
lachu 8:475898cdb7d4 47 if(n>0){
lachu 8:475898cdb7d4 48 if(strcmp(buffer, "red") == 0){
lachu 8:475898cdb7d4 49 printf("REDled\n");
lachu 8:475898cdb7d4 50 led1.write(0);
lachu 8:475898cdb7d4 51 }else if(strcmp(buffer, "green") == 0){
lachu 8:475898cdb7d4 52 printf("GREENled\n");
lachu 8:475898cdb7d4 53 led2.write(0);
lachu 8:475898cdb7d4 54 }else if(strcmp(buffer, "blue") == 0){
lachu 8:475898cdb7d4 55 printf("BLUEled\n");
lachu 8:475898cdb7d4 56 led3.write(0);
lachu 8:475898cdb7d4 57 }else if(strcmp(buffer, "clear") == 0){
lachu 8:475898cdb7d4 58 printf("CLEAR\n");
lachu 8:475898cdb7d4 59 led1.write(1);
lachu 8:475898cdb7d4 60 led2.write(1);
lachu 8:475898cdb7d4 61 led3.write(1);
lachu 8:475898cdb7d4 62 }else if(strcmp(buffer, "white") == 0){
lachu 8:475898cdb7d4 63 printf("WHITE\n");
lachu 8:475898cdb7d4 64 led1.write(0);
lachu 8:475898cdb7d4 65 led2.write(0);
lachu 8:475898cdb7d4 66 led3.write(0);
lachu 8:475898cdb7d4 67 }else if(strcmp(buffer, "tred") == 0){
lachu 8:475898cdb7d4 68 printf("REDtoggleled\n");
lachu 8:475898cdb7d4 69 led1 = !led1;
lachu 8:475898cdb7d4 70 }else if(strcmp(buffer, "tgreen") == 0){
lachu 8:475898cdb7d4 71 printf("GREENtoggleled\n");
lachu 8:475898cdb7d4 72 led2 = !led2;
lachu 8:475898cdb7d4 73 }else if(strcmp(buffer, "tblue") == 0){
lachu 8:475898cdb7d4 74 printf("BLUEtoggleled\n");
lachu 8:475898cdb7d4 75 led3 = !led3;
lachu 8:475898cdb7d4 76 }else if(strcmp(buffer, "CLOSE") == 0){
lachu 8:475898cdb7d4 77 printf("CLOSE\n");
lachu 8:475898cdb7d4 78 break;
lachu 8:475898cdb7d4 79 }
lachu 8:475898cdb7d4 80 }
lachu 8:475898cdb7d4 81 //led3.write(1);
mbedAustin 7:a5ead1402704 82
lachu 8:475898cdb7d4 83 printf("Received message from Client :'%s'\n",buffer);
lachu 8:475898cdb7d4 84
lachu 8:475898cdb7d4 85 n=0;
lachu 8:475898cdb7d4 86 //if (n <= 0) break;
emilmont 1:5cebe0e38cd2 87 }
lachu 8:475898cdb7d4 88 printf("TEST2");
emilmont 1:5cebe0e38cd2 89 client.close();
lachu 8:475898cdb7d4 90 led1.write(1);
lachu 8:475898cdb7d4 91 led2.write(1);
lachu 8:475898cdb7d4 92 led3.write(1);
lachu 8:475898cdb7d4 93 printf(" TEST3\n");
emilmont 1:5cebe0e38cd2 94 }
emilmont 1:5cebe0e38cd2 95 }