DHCP and TCP Server, Chat program

Dependencies:   WIZnetInterface mbed

Committer:
embeddist
Date:
Mon Jul 06 04:53:20 2015 +0000
Revision:
0:893f22e4a170
DHCPChatServer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
embeddist 0:893f22e4a170 1 #include "mbed.h"
embeddist 0:893f22e4a170 2 #include "EthernetInterface.h"
embeddist 0:893f22e4a170 3
embeddist 0:893f22e4a170 4 #define ECHO_SERVER_PORT 23 // telnet defaults to port 23
embeddist 0:893f22e4a170 5
embeddist 0:893f22e4a170 6 DigitalOut myled(LED1);
embeddist 0:893f22e4a170 7
embeddist 0:893f22e4a170 8 // Initialize the Ethernet client library
embeddist 0:893f22e4a170 9 EthernetInterface eth;
embeddist 0:893f22e4a170 10
embeddist 0:893f22e4a170 11 int main() {
embeddist 0:893f22e4a170 12 // Enter a MAC address for your controller below.
embeddist 0:893f22e4a170 13 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02};
embeddist 0:893f22e4a170 14
embeddist 0:893f22e4a170 15 // initializing MAC address
embeddist 0:893f22e4a170 16 eth.init(mac_addr);
embeddist 0:893f22e4a170 17
embeddist 0:893f22e4a170 18 // Check Ethenret Link
embeddist 0:893f22e4a170 19 if(eth.link() == true)
embeddist 0:893f22e4a170 20 printf("- Ethernet PHY Link-Done \r\n");
embeddist 0:893f22e4a170 21 else
embeddist 0:893f22e4a170 22 printf("- Ethernet PHY Link- Fail\r\n");
embeddist 0:893f22e4a170 23
embeddist 0:893f22e4a170 24 // Start Ethernet connecting: Trying to get an IP address using DHCP
embeddist 0:893f22e4a170 25 if ( eth.connect() < 0 )
embeddist 0:893f22e4a170 26 printf("Fail - Ethernet Connecing");
embeddist 0:893f22e4a170 27 else
embeddist 0:893f22e4a170 28 {
embeddist 0:893f22e4a170 29 // Print your local IP address:
embeddist 0:893f22e4a170 30 printf("IP=%s\n\r",eth.getIPAddress());
embeddist 0:893f22e4a170 31 printf("MASK=%s\n\r",eth.getNetworkMask());
embeddist 0:893f22e4a170 32 printf("GW=%s\n\r",eth.getGateway());
embeddist 0:893f22e4a170 33 }
embeddist 0:893f22e4a170 34
embeddist 0:893f22e4a170 35 TCPSocketServer server;
embeddist 0:893f22e4a170 36 server.bind(ECHO_SERVER_PORT);
embeddist 0:893f22e4a170 37 server.listen();
embeddist 0:893f22e4a170 38
embeddist 0:893f22e4a170 39 while (true) {
embeddist 0:893f22e4a170 40 printf("\nWait for new connection...\r\n");
embeddist 0:893f22e4a170 41 TCPSocketConnection client;
embeddist 0:893f22e4a170 42 server.accept(client);
embeddist 0:893f22e4a170 43 //client.set_blocking(false, 1500); // Timeout after (1.5)s
embeddist 0:893f22e4a170 44
embeddist 0:893f22e4a170 45 printf("Connection from: %s\r\n", client.get_address());
embeddist 0:893f22e4a170 46 char buffer[256];
embeddist 0:893f22e4a170 47 while (true) {
embeddist 0:893f22e4a170 48 int n = client.receive(buffer, sizeof(buffer));
embeddist 0:893f22e4a170 49 if (n <= 0) break;
embeddist 0:893f22e4a170 50
embeddist 0:893f22e4a170 51 // print received message to terminal
embeddist 0:893f22e4a170 52 buffer[n] = '\0';
embeddist 0:893f22e4a170 53 printf("Received message from Client :'%s'\r\n",buffer);
embeddist 0:893f22e4a170 54
embeddist 0:893f22e4a170 55 // reverse the message
embeddist 0:893f22e4a170 56 char temp;
embeddist 0:893f22e4a170 57 for(int f = 0, l = n-1; f<l; f++,l--){
embeddist 0:893f22e4a170 58 temp = buffer[f];
embeddist 0:893f22e4a170 59 buffer[f] = buffer[l];
embeddist 0:893f22e4a170 60 buffer[l] = temp;
embeddist 0:893f22e4a170 61 }
embeddist 0:893f22e4a170 62
embeddist 0:893f22e4a170 63 // print reversed message to terminal
embeddist 0:893f22e4a170 64 printf("Sending message to Client: '%s'\r\n",buffer);
embeddist 0:893f22e4a170 65
embeddist 0:893f22e4a170 66 // Echo received message back to client
embeddist 0:893f22e4a170 67 client.send_all(buffer, n);
embeddist 0:893f22e4a170 68 if (n <= 0) break;
embeddist 0:893f22e4a170 69 }
embeddist 0:893f22e4a170 70
embeddist 0:893f22e4a170 71 client.close();
embeddist 0:893f22e4a170 72
embeddist 0:893f22e4a170 73 //led blinky
embeddist 0:893f22e4a170 74 myled = 1;
embeddist 0:893f22e4a170 75 wait(0.2);
embeddist 0:893f22e4a170 76 myled = 0;
embeddist 0:893f22e4a170 77 wait(0.2);
embeddist 0:893f22e4a170 78 }
embeddist 0:893f22e4a170 79 }