M3 Board Socket Communication

Dependencies:   EthernetInterface mbed-rtos mbed

Fork of TCPEchoServer by Mbed

Committer:
bulmecisco
Date:
Thu Jun 16 16:51:46 2016 +0000
Revision:
8:6db0cbf4761a
Parent:
7:a5ead1402704
M3 Board Socket Communication

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"
bulmecisco 8:6db0cbf4761a 3 #include "string.h"
emilmont 1:5cebe0e38cd2 4
bulmecisco 8:6db0cbf4761a 5 DigitalOut led1(LED1);
bulmecisco 8:6db0cbf4761a 6
bulmecisco 8:6db0cbf4761a 7 #define ECHO_SERVER_PORT 9050
emilmont 3:36fd3cfad85a 8
emilmont 1:5cebe0e38cd2 9 int main (void) {
emilmont 1:5cebe0e38cd2 10 EthernetInterface eth;
emilmont 1:5cebe0e38cd2 11 eth.init(); //Use DHCP
emilmont 1:5cebe0e38cd2 12 eth.connect();
mbedAustin 7:a5ead1402704 13 printf("\nServer IP Address is %s\n", eth.getIPAddress());
emilmont 1:5cebe0e38cd2 14
emilmont 1:5cebe0e38cd2 15 TCPSocketServer server;
emilmont 3:36fd3cfad85a 16 server.bind(ECHO_SERVER_PORT);
emilmont 3:36fd3cfad85a 17 server.listen();
emilmont 1:5cebe0e38cd2 18
emilmont 1:5cebe0e38cd2 19 while (true) {
emilmont 1:5cebe0e38cd2 20 printf("\nWait for new connection...\n");
emilmont 1:5cebe0e38cd2 21 TCPSocketConnection client;
emilmont 1:5cebe0e38cd2 22 server.accept(client);
bulmecisco 8:6db0cbf4761a 23 //client.set_blocking(false, 1500); // Timeout after (1.5)s
emilmont 1:5cebe0e38cd2 24
emilmont 1:5cebe0e38cd2 25 printf("Connection from: %s\n", client.get_address());
emilmont 1:5cebe0e38cd2 26 char buffer[256];
emilmont 1:5cebe0e38cd2 27 while (true) {
emilmont 3:36fd3cfad85a 28 int n = client.receive(buffer, sizeof(buffer));
emilmont 1:5cebe0e38cd2 29 if (n <= 0) break;
emilmont 1:5cebe0e38cd2 30
mbedAustin 7:a5ead1402704 31 // print received message to terminal
mbedAustin 7:a5ead1402704 32 buffer[n] = '\0';
mbedAustin 7:a5ead1402704 33 printf("Received message from Client :'%s'\n",buffer);
mbedAustin 7:a5ead1402704 34
bulmecisco 8:6db0cbf4761a 35 if(strstr(buffer, "On1"))
bulmecisco 8:6db0cbf4761a 36 led1 = 1;
bulmecisco 8:6db0cbf4761a 37 if(strstr(buffer, "Off1"))
bulmecisco 8:6db0cbf4761a 38 led1 = 0;
bulmecisco 8:6db0cbf4761a 39
mbedAustin 7:a5ead1402704 40 // reverse the message
bulmecisco 8:6db0cbf4761a 41 /*char temp;
mbedAustin 7:a5ead1402704 42 for(int f = 0, l = n-1; f<l; f++,l--){
mbedAustin 7:a5ead1402704 43 temp = buffer[f];
mbedAustin 7:a5ead1402704 44 buffer[f] = buffer[l];
mbedAustin 7:a5ead1402704 45 buffer[l] = temp;
mbedAustin 7:a5ead1402704 46 }
bulmecisco 8:6db0cbf4761a 47 */
mbedAustin 7:a5ead1402704 48 // print reversed message to terminal
bulmecisco 8:6db0cbf4761a 49 printf("Sending message to Client: '%s'\n","OK");
mbedAustin 7:a5ead1402704 50
mbedAustin 7:a5ead1402704 51 // Echo received message back to client
emilmont 2:ec5ae99791da 52 client.send_all(buffer, n);
emilmont 1:5cebe0e38cd2 53 if (n <= 0) break;
emilmont 1:5cebe0e38cd2 54 }
emilmont 3:36fd3cfad85a 55
emilmont 1:5cebe0e38cd2 56 client.close();
emilmont 1:5cebe0e38cd2 57 }
emilmont 1:5cebe0e38cd2 58 }