DHCP and TCP Server, Chat program

Dependencies:   WIZnetInterface 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   23 // telnet defaults to port 23
00005 
00006 DigitalOut myled(LED1);
00007 
00008 // Initialize the Ethernet client library
00009 EthernetInterface eth;
00010 
00011 int main() {
00012     // Enter a MAC address for your controller below.
00013     uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
00014     
00015     // initializing MAC address
00016     eth.init(mac_addr);
00017 
00018     // Check Ethenret Link
00019     if(eth.link() == true)
00020         printf("- Ethernet PHY Link-Done \r\n");
00021     else
00022         printf("- Ethernet PHY Link- Fail\r\n");
00023 
00024     // Start Ethernet connecting: Trying to get an IP address using DHCP
00025     if ( eth.connect() < 0 )
00026         printf("Fail - Ethernet Connecing");
00027     else
00028     {
00029         // Print your local IP address:
00030         printf("IP=%s\n\r",eth.getIPAddress());
00031         printf("MASK=%s\n\r",eth.getNetworkMask());
00032         printf("GW=%s\n\r",eth.getGateway());
00033     }        
00034 
00035     TCPSocketServer server;
00036     server.bind(ECHO_SERVER_PORT);
00037     server.listen();
00038     
00039     while (true) {
00040         printf("\nWait for new connection...\r\n");
00041         TCPSocketConnection client;
00042         server.accept(client);
00043         //client.set_blocking(false, 1500); // Timeout after (1.5)s
00044         
00045         printf("Connection from: %s\r\n", client.get_address());
00046         char buffer[256];
00047         while (true) {
00048             int n = client.receive(buffer, sizeof(buffer));
00049             if (n <= 0) break;
00050             
00051             // print received message to terminal
00052             buffer[n] = '\0';
00053             printf("Received message from Client :'%s'\r\n",buffer);
00054             
00055             // reverse the message
00056             char temp;
00057             for(int f = 0, l = n-1; f<l; f++,l--){
00058                 temp = buffer[f];
00059                 buffer[f] = buffer[l];
00060                 buffer[l] = temp;
00061                 }
00062             
00063             // print reversed message to terminal
00064             printf("Sending message to Client: '%s'\r\n",buffer);
00065             
00066             // Echo received message back to client
00067             client.send_all(buffer, n);
00068             if (n <= 0) break;
00069         }
00070         
00071         client.close();
00072         
00073         //led blinky
00074         myled = 1;
00075         wait(0.2);
00076         myled = 0;
00077         wait(0.2);
00078     }
00079 }