Ejemplo n.º 1
0
/* ==============================================
	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 ;
}
Ejemplo n.º 2
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;
			}
		}
	}
}