Sto provando a sviluppare un server TCP con librerie POCO C++. Ho trovato alcuni esempi here. All'inizio ho provato un esempio da Alex ma l'evento di chiusura non ha funzionato. EchoServer ha lo stesso problema. Quindi, ho provato l'esempio di Cesar Ortiz e ho avuto un problema insolito. Dopo un po 'time server genera un errore:Server TCP multithread con librerie POCO C++
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
["src/ErrorHandler.cpp", line 60]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
e collegamenti ottenuto l'errore di timeout di connessione, le nuove connessioni pure. Esempio con semeed Eventhandler più corretto, ma non so come posso risolvere l'evento di chiusura.
Grazie per la risposta Alex. Come ho detto, ora uso il secondo esempio come il tuo, ma non riesco a trovare la causa di un bug con il messaggio "src/errorhandler.cpp". Dopo che questo server accetta le connessioni, ma non invia o riceve byte per nuove connessioni e lancia "timeout della connessione" per le connessioni esistenti. –
È necessario generare un'eccezione da qualche parte nel gestore di connessione. Poiché viene eseguito in un thread, finisce nel gestore degli errori predefinito. L'eccezione non è probabilmente un discendente di std :: exception, quindi ErrorHandler non ne sa nulla. Ma non fornisci informazioni sufficienti per una risposta definitiva su quale sia il problema. Meglio eseguire il codice nel debugger e passarlo attraverso per trovare dove è la fonte del tuo problema. – Alex
Come ho detto, uso l'esempio di Cesar Ortiz, ho appena cambiato la funzione 'run' - [qui] (http://hastebin.com/lokadobeve.coffee) Come ho scoperto, quando una connessione non ha potuto ottenere dati perché in coda, ma non riesco a capire perché? Quando le connessioni correnti raggiungono 16, tutte le nuove connessioni vengono aggiunte alla coda e rifiutate dopo. In params ho impostato maxqueued (3), maxthreads (20) e threadidletime (100) –