TCP Echo Client example

Dependencies:   EthernetInterface mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Tue Feb 14 16:43:07 2017 +0000
Parent:
5:529642dd94c3
Child:
7:88de3c8d25cb
Commit message:
Update libraries. Make example more verbose.

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- a/EthernetInterface.lib	Tue Jun 04 16:06:35 2013 +0100
+++ b/EthernetInterface.lib	Tue Feb 14 16:43:07 2017 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/EthernetInterface/
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
--- a/main.cpp	Tue Jun 04 16:06:35 2013 +0100
+++ b/main.cpp	Tue Feb 14 16:43:07 2017 +0000
@@ -1,31 +1,101 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
 #include "mbed.h"
 #include "EthernetInterface.h"
-
-const char* ECHO_SERVER_ADDRESS = "192.168.0.51";
-const int ECHO_SERVER_PORT = 7;
-
-int main() {
+ 
+#define ECHO_SERVER_PORT   7
+ 
+int main (void) {
     EthernetInterface eth;
     eth.init(); //Use DHCP
     eth.connect();
-    printf("IP Address is %s\n", eth.getIPAddress());
+    printf("\nServer IP Address is %s\n", eth.getIPAddress());
     
-    TCPSocketConnection socket;
-    while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) {
-        printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
-        wait(1);
-    }
-    
-    char hello[] = "Hello World\n";
-    socket.send_all(hello, sizeof(hello) - 1);
+    TCPSocketServer server;
+    server.bind(ECHO_SERVER_PORT);
+    server.listen();
     
-    char buf[256];
-    int n = socket.receive(buf, 256);
-    buf[n] = '\0';
-    printf("%s", buf);
-    
-    socket.close();
-    eth.disconnect();
-    
-    while(true) {}
-}
+    while (true) {
+        printf("\nWait for new connection...\n");
+        TCPSocketConnection client;
+        server.accept(client);
+        client.set_blocking(false, 1500); // Timeout after (1.5)s
+        
+        printf("Connection from: %s\n", client.get_address());
+        char buffer[256];
+        while (true) {
+            int n = client.receive(buffer, sizeof(buffer));
+            if (n <= 0) break;
+            
+            // print received message to terminal
+            buffer[n] = '\0';
+            printf("Received message from Client :'%s'\n",buffer);
+            
+            // reverse the message
+            char temp;
+            for(int f = 0, l = n-1; f<l; f++,l--){
+                temp = buffer[f];
+                buffer[f] = buffer[l];
+                buffer[l] = temp;
+                }
+            
+            // print reversed message to terminal
+            printf("Sending message to Client: '%s'\n",buffer);
+            
+            // Echo received message back to client
+            client.send_all(buffer, n);
+            if (n <= 0) break;
+        }
+        
+        client.close();
+    
\ No newline at end of file
--- a/mbed-rtos.lib	Tue Jun 04 16:06:35 2013 +0100
+++ b/mbed-rtos.lib	Tue Feb 14 16:43:07 2017 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed-rtos/#58563e6cba1e
--- a/mbed.bld	Tue Jun 04 16:06:35 2013 +0100
+++ b/mbed.bld	Tue Feb 14 16:43:07 2017 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/ef9c61f8c49f
\ No newline at end of file