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; } } } }
/* ============================================== 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 CPecaCore::threadServer() { CPecaServer server; CSocket sockServer; sockServer.bind(); while (1) { CSocket* psock = sockServer.accept(); if (psock) { char strIP[64]; psock->GetFromHost().toStr(strIP); LOG_DEBUG(_T("%s から接続要求"), strIP); boost::thread(boost::bind(&CPecaCore::handshake, this, psock)); } ::Sleep(10); } //server. }