TCP Echo Client example
Dependencies: EthernetInterface mbed-rtos mbed
Diff: main.cpp
- Revision:
- 6:dd8d1cf1cb9c
- Parent:
- 3:3fbf0efec25a
- Child:
- 7:88de3c8d25cb
--- 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