/* ============================================== main task routine ============================================== */ int main(void) { pool_memadd((uint32_t)pool, sizeof(pool)); #ifdef DEBUG dbg.start(); #endif char ch; CSocket *client; CSocket server; server.create(SOCK_STREAM); server.bind(23); // bind to port 23 server.listen(); // enter listen mode // Enter an endless loop while(1){ client = server.accept(); // accept and create a connected socket if ( client!=NULL ) { dbg.println("Client connected\n"); while( client->isConnected() ) { // check connection if ( client->read(&ch, sizeof(ch)) ) { // read from client client->write(&ch, sizeof(ch)); // echo to client } } dbg.println("Client disconnected\n"); delete client; // free client after disconnected } } return 0 ; }
void CDebug::run() { if ( m_port==DBG_USB ) { // // USB port // CSerial cdc(USB); m_shell.assign(cdc); while(1) { if ( cdc.isConnected() ) { m_shell.run(); } } } else { // // Telnet (TCP/IP port 23) // CSocket server; CSocket *client; server.create(SOCK_STREAM); server.bind(TELNET_PORT); server.listen(); while (1) { if ((client = server.accept()) != NULL) { client->keepAlive(3, 3, 3); // set keep alive in 3 seconds for idle, try in 3 seconds and 3 times m_shell.assign(client); m_shell.run(); delete client; } } } }