Paul Staron
/
TCP-NTP-Server
TCP, NTP and server Ethernet and WI-FI example working on OS5.15
main.cpp
- Committer:
- star297
- Date:
- 2020-02-28
- Revision:
- 2:06cbf3f53592
- Parent:
- 0:d2e1b817924d
- Child:
- 3:91523db40ebd
File content as of revision 2:06cbf3f53592:
#include "mbed.h" #include "EthernetInterface.h" #include "NTPclient.h" #define IP "192.168.1.180" #define GATEWAY "192.168.1.1" #define NETMASK "255.255.255.0" #define PORT 80 // set required stdio buad rate in mbed_app.json. eg,"platform.stdio-baud-rate": 115200 EthernetInterface net; NTPclient ntp(net); DigitalOut led(LED1); char *sendbuffer = new char[512]; // create data send buffer space int main() { led=0; printf("\033[0m\033[2J\033[HTCP NTP client and server example\r\n\n\n"); // Tera Term clear screen time_t seconds = time(NULL); printf("Initial RTC time: %s\r\n", ctime(&seconds)); EthernetInterface eth; eth.set_network (IP, NETMASK, GATEWAY); // include to set network connection with static parameters. eth.connect(); const char *ip = eth.get_ip_address(); if(ip){ printf("Connected\n\nGet NTP time...\n"); if(ntp.setTime("0.pool.ntp.org",123,3000)==0){ time_t seconds = time(NULL); printf("System time set by NTP: %s\n\n", ctime(&seconds)); } else{printf("No NTP could not set RTC !!\n\n");} }else{ printf("No IP!!\n"); while(1); } TCPSocket srv; TCPSocket *client_sock; // srv.accept() will return pointer to socket SocketAddress client_addr; // Open the server on ethernet stack srv.open(ð); // Bind the HTTP port (TCP 80) to the server srv.bind(eth.get_ip_address(), PORT); //Can handle x simultaneous connections srv.listen(1); printf("The Server IP address: '%s'\n", ip); printf("Waiting for connection....\r\n\n"); led=1; while(1){ client_sock = srv.accept(); //return pointer of a client socket char *recevbuffer = new char[256]; // create 'clean' http receive buffer space client_sock->recv(recevbuffer, 256); // set size of required receive data length client_sock->getpeername(&client_addr); //this will fill address of client to the SocketAddress object printf("Accepted %s:%d\n\n", client_addr.get_ip_address(), client_addr.get_port()); printf("Received Msg:\n%s\n\n", recevbuffer); time_t seconds = time(NULL); //get current mcu rtc time 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)); client_sock->send(sendbuffer, strlen(sendbuffer)); // send data in buffer to http port. client_sock->close(); delete[] recevbuffer; // delete http buffer } }