Inderpreet Singh / Mbed 2 deprecated frdm-tcp-socks

Dependencies:   EthernetInterface mbed-rtos 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 DigitalOut heartbeatLed(LED_GREEN);
00007 DigitalOut myled(LED_RED);
00008 
00009 void server_thread(void const* arg) {
00010     
00011     TCPSocketServer server;
00012     
00013     server.set_blocking (true);
00014     server.bind(ECHO_SERVER_PORT);
00015     server.listen(1);    
00016     while (true) 
00017     {
00018         //printf("Wait for new connection...\r\n");
00019         TCPSocketConnection client;
00020         server.accept(client);
00021         client.set_blocking(false, true); // Timeout after (1.5)s
00022         
00023         //printf("Connection from: %s\r\n", client.get_address());
00024         char buffer[256];
00025         while (true) {
00026             int n = client.receive(buffer, sizeof(buffer));
00027             if (n <= 0) break;
00028             
00029             if(buffer[0]=='Y'){
00030                 myled=1;
00031             }else{
00032                 myled=0;
00033             }
00034 
00035             sprintf(buffer, "Hi Alisha.How are u?");
00036             client.send_all(buffer, n);
00037             if (n <= 0) break;
00038         }        
00039         client.close();
00040     }
00041 }
00042 
00043 
00044 int main (void) 
00045 {
00046     
00047     //printf("Wait a second...\r\n");
00048     //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
00049     static const char*          mbedIp       = "192.168.64.232";  //IP
00050     static const char*          mbedMask     = "255.255.255.0";  // Mask
00051     static const char*          mbedGateway  = "192.168.64.1";    //Gateway
00052  
00053     EthernetInterface eth;
00054     eth.init(mbedIp, mbedMask, mbedGateway); //Use DHCP
00055     eth.connect();
00056     //printf("Server IP Address is %s\r\n", eth.getIPAddress());
00057     
00058     Thread server(&server_thread);
00059     
00060     while(true){
00061       Thread::wait(1000);
00062       // Heartbeat.
00063       // The board systematically crashes after a low number of sends from a client,
00064       // e.g. ~10 times 1000 bytes, ~2-3 times 10000 bytes, etc.
00065       heartbeatLed = !heartbeatLed;
00066     }   
00067     
00068 }
00069