TCPEchoServer example for WIZwiki-W7500

Dependencies:   WIZnetInterface mbed

Fork of TCPEchoServer by Mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003 
00004 #define ECHO_SERVER_PORT   7
00005 
00006 int main (void) 
00007 {
00008     printf("Wait a second...\r\n");
00009     uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
00010     EthernetInterface eth;
00011     eth.init(mac_addr); //Use DHCP
00012     eth.connect();
00013     printf("Server IP Address is %s\r\n", eth.getIPAddress());
00014     
00015     TCPSocketServer server;
00016     server.bind(ECHO_SERVER_PORT);
00017     server.listen();
00018     
00019     while (true) 
00020     {
00021         printf("Wait for new connection...\r\n");
00022         TCPSocketConnection client;
00023         server.accept(client);
00024         client.set_blocking(false, 15000); // Timeout after (1.5)s
00025         
00026         printf("Connection from: %s\r\n", client.get_address());
00027         char buffer[256];
00028         while (true) {
00029             int n = client.receive(buffer, sizeof(buffer));
00030             if (n <= 0) break;
00031             
00032             // print received message to terminal
00033             buffer[n] = '\0';
00034             printf("Received message from Client :'%s'\r\n",buffer);
00035             
00036             // reverse the message
00037             char temp;
00038             for(int f = 0, l = n-1; f<l; f++,l--){
00039                 temp = buffer[f];
00040                 buffer[f] = buffer[l];
00041                 buffer[l] = temp;
00042                 }
00043             
00044             // print reversed message to terminal
00045             printf("Sending message to Client: '%s'\r\n",buffer);
00046             
00047             // Echo received message back to client
00048             client.send_all(buffer, n);
00049             if (n <= 0) break;
00050         }
00051         
00052         client.close();
00053     }
00054     
00055 }
00056