Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 #include "mbed.h" 00002 #include "NTPclient.h" 00003 #include "favicon_ico.h" 00004 00005 // define static IP settings 00006 #define IP "192.168.1.180" 00007 #define GATEWAY "192.168.1.1" 00008 #define NETMASK "255.255.255.0" 00009 #define PORT 80 00010 00011 NetworkInterface *net = NetworkInterface::get_default_instance(); 00012 NTPclient ntp(*net); 00013 00014 DigitalOut led(LED1); 00015 time_t seconds; 00016 00017 char requestType[16]; 00018 char request[64]; 00019 00020 char *sendbuffer = new char[512]; // create data send buffer space 00021 char recevbuffer[1024]; // create http receive buffer space 00022 00023 int main() 00024 { 00025 printf("\033[0m\033[2J\033[HTCP NTP client and server example\r\n\n\n"); // Tera Term clear screen 00026 seconds = time(NULL); 00027 printf("Initial RTC time: %s\r\n", ctime(&seconds)); 00028 00029 // Include to set static IP 00030 int net_static = net->set_network((SocketAddress)IP,(SocketAddress)NETMASK,(SocketAddress)GATEWAY); 00031 00032 printf("Connecting to network...\n\n"); 00033 00034 if (!net) { 00035 printf("No network interface found, select an interface in 'mbed_app.json'\n"); 00036 return NULL; 00037 } 00038 nsapi_error_t connect_status = net->connect(); 00039 if (connect_status != NSAPI_ERROR_OK) { 00040 printf("Failed to connect to network (%d)\n", connect_status); 00041 return NULL; 00042 } 00043 00044 SocketAddress net_addr; 00045 net->get_ip_address(&net_addr); 00046 printf("IP address: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None"); 00047 net->get_netmask(&net_addr); 00048 printf("Netmask: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None"); 00049 net->get_gateway(&net_addr); 00050 printf("Gateway: %s\n", net_addr.get_ip_address() ? net_addr.get_ip_address() : "None"); 00051 printf("MAC: %s\n", net->get_mac_address()); 00052 00053 net->get_ip_address(&net_addr); 00054 const char *ip = net_addr.get_ip_address(); 00055 00056 if(ip){ 00057 printf("\nConnected\n\nGet NTP time...\n"); 00058 if(ntp.getNTP("0.pool.ntp.org",3600,1,1)){ 00059 seconds = time(NULL); 00060 printf("RTC time set by NTP: %s\n\n", ctime(&seconds)); 00061 } 00062 else{printf("No NTP could not set RTC !!\n\n"); 00063 } 00064 }else{ 00065 printf("No IP!!\n"); 00066 while(1); 00067 } 00068 00069 TCPSocket srv; 00070 TCPSocket *client_sock; // srv.accept() will return pointer to socket 00071 SocketAddress client_addr; 00072 00073 // Open the server on ethernet stack 00074 srv.open(net); 00075 // Bind the HTTP port (TCP 80) to the server 00076 srv.bind(80); 00077 //Can handle x simultaneous connections 00078 srv.listen(5); 00079 00080 printf("The Server IP address: '%s'\n", ip); 00081 printf("Waiting for connection....\r\n\n"); 00082 00083 nsapi_size_or_error_t result; 00084 00085 while(1){ 00086 00087 client_sock = srv.accept(); //return pointer of a client socket 00088 led=1; 00089 //this will fill address of client to the SocketAddress object 00090 client_sock->getpeername(&client_addr); 00091 printf("\nConnected,Client: %s Port: %d\n", client_addr.get_ip_address(), client_addr.get_port()); 00092 //receive client data, (set large enough buffer) 00093 result = client_sock->recv(recevbuffer, 1024); 00094 if (result < 0) { 00095 printf("Error! socket.recv() returned: %d\n", result); 00096 } 00097 00098 if(result){ 00099 //printf("Received Msg:\n%s\n\n", recevbuffer); // include to view complete receive buffer 00100 sscanf(recevbuffer,"%s %s",requestType,request); 00101 printf("request: %s Type: %s charcters:%d\n", requestType,request,result); 00102 00103 if(strcmp(request,"/")==0){ 00104 //send current mcu rtc time to client 00105 time_t seconds = time(NULL); 00106 sprintf(sendbuffer,"HTTP/1.1 200 OK\n Content-type: text/plain\r\n\r\n <h1> Hello !!</h1>\r\n\n <h1>Time is: %s</h1>\r\n", ctime(&seconds)); 00107 printf("Sending Message\n"); 00108 result=client_sock->send(sendbuffer, strlen(sendbuffer)); // send data in buffer to http port. 00109 printf("Sent Message, %d bytes\n",result); 00110 } 00111 else if(strcmp(request,"/favicon.ico")==0){ 00112 //send favicon if requested 00113 printf("Sending Favicon\n"); 00114 result=client_sock->send((char*)favicon_ico,sizeof(favicon_ico)); 00115 printf("Sent Favicon, %d bytes\n",result); 00116 } 00117 else{ 00118 // send page not found reply 00119 sprintf(sendbuffer,"HTTP/1.1 404 Not Found\nContent-type: text/plain\r\n\r\npage not found"); 00120 printf("Sending Not Found Message\n"); 00121 result=client_sock->send(sendbuffer, strlen(sendbuffer)); 00122 printf("Sent Not Found Message, %d bytes\n",result); 00123 } 00124 } 00125 else{ 00126 printf("Disconnected\n"); 00127 } 00128 //close socket 00129 client_sock->close(); 00130 led=0; 00131 } 00132 }
Generated on Wed Jul 13 2022 09:49:55 by
1.7.2