TCP Echo Client example

Dependencies:   EthernetInterface mbed-rtos mbed

Committer:
mbed_official
Date:
Tue Feb 14 16:45:07 2017 +0000
Revision:
7:88de3c8d25cb
Parent:
6:dd8d1cf1cb9c
Remove line numbers.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:e8f884c94549 1 #include "mbed.h"
emilmont 1:a51d8ed156e6 2 #include "EthernetInterface.h"
mbed_official 6:dd8d1cf1cb9c 3
mbed_official 6:dd8d1cf1cb9c 4 #define ECHO_SERVER_PORT 7
mbed_official 6:dd8d1cf1cb9c 5
mbed_official 6:dd8d1cf1cb9c 6 int main (void) {
emilmont 1:a51d8ed156e6 7 EthernetInterface eth;
emilmont 1:a51d8ed156e6 8 eth.init(); //Use DHCP
emilmont 1:a51d8ed156e6 9 eth.connect();
mbed_official 6:dd8d1cf1cb9c 10 printf("\nServer IP Address is %s\n", eth.getIPAddress());
emilmont 1:a51d8ed156e6 11
mbed_official 6:dd8d1cf1cb9c 12 TCPSocketServer server;
mbed_official 6:dd8d1cf1cb9c 13 server.bind(ECHO_SERVER_PORT);
mbed_official 6:dd8d1cf1cb9c 14 server.listen();
emilmont 1:a51d8ed156e6 15
mbed_official 6:dd8d1cf1cb9c 16 while (true) {
mbed_official 6:dd8d1cf1cb9c 17 printf("\nWait for new connection...\n");
mbed_official 6:dd8d1cf1cb9c 18 TCPSocketConnection client;
mbed_official 6:dd8d1cf1cb9c 19 server.accept(client);
mbed_official 6:dd8d1cf1cb9c 20 client.set_blocking(false, 1500); // Timeout after (1.5)s
mbed_official 6:dd8d1cf1cb9c 21
mbed_official 6:dd8d1cf1cb9c 22 printf("Connection from: %s\n", client.get_address());
mbed_official 6:dd8d1cf1cb9c 23 char buffer[256];
mbed_official 6:dd8d1cf1cb9c 24 while (true) {
mbed_official 6:dd8d1cf1cb9c 25 int n = client.receive(buffer, sizeof(buffer));
mbed_official 6:dd8d1cf1cb9c 26 if (n <= 0) break;
mbed_official 6:dd8d1cf1cb9c 27
mbed_official 6:dd8d1cf1cb9c 28 // print received message to terminal
mbed_official 6:dd8d1cf1cb9c 29 buffer[n] = '\0';
mbed_official 6:dd8d1cf1cb9c 30 printf("Received message from Client :'%s'\n",buffer);
mbed_official 6:dd8d1cf1cb9c 31
mbed_official 6:dd8d1cf1cb9c 32 // reverse the message
mbed_official 6:dd8d1cf1cb9c 33 char temp;
mbed_official 6:dd8d1cf1cb9c 34 for(int f = 0, l = n-1; f<l; f++,l--){
mbed_official 6:dd8d1cf1cb9c 35 temp = buffer[f];
mbed_official 6:dd8d1cf1cb9c 36 buffer[f] = buffer[l];
mbed_official 6:dd8d1cf1cb9c 37 buffer[l] = temp;
mbed_official 6:dd8d1cf1cb9c 38 }
mbed_official 6:dd8d1cf1cb9c 39
mbed_official 6:dd8d1cf1cb9c 40 // print reversed message to terminal
mbed_official 6:dd8d1cf1cb9c 41 printf("Sending message to Client: '%s'\n",buffer);
mbed_official 6:dd8d1cf1cb9c 42
mbed_official 6:dd8d1cf1cb9c 43 // Echo received message back to client
mbed_official 6:dd8d1cf1cb9c 44 client.send_all(buffer, n);
mbed_official 6:dd8d1cf1cb9c 45 if (n <= 0) break;
mbed_official 6:dd8d1cf1cb9c 46 }
mbed_official 6:dd8d1cf1cb9c 47
mbed_official 6:dd8d1cf1cb9c 48 client.close();
mbed_official 6:dd8d1cf1cb9c 49