DHCP and TCP Server, Chat program
Dependencies: WIZnetInterface mbed
main.cpp@0:893f22e4a170, 2015-07-06 (annotated)
- Committer:
- embeddist
- Date:
- Mon Jul 06 04:53:20 2015 +0000
- Revision:
- 0:893f22e4a170
DHCPChatServer
Who changed what in which revision?
User | Revision | Line number | New 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 | } |