DHCP and TCP Server, Chat program
Dependencies: WIZnetInterface mbed
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 }
Generated on Wed Jul 13 2022 19:01:48 by 1.7.2