I thread sono già abbastanza incasinati per loro conto, se poi ti trovi un programma scritto male in partenza non si va da nessuna parte. Cerca di scrivere in maniera + pulita senza milioni di variabili inutili e giri assurdi e ripetitivi.
Vedo che già hai un file di log, usalo per monitorare gli i/o in fondo servono a questo. Poi, sempre per il debugging consiglio di usare 127.0.0.1 una porta elevata di default senza dover scrivere ogni volta la solita pappardella.
L'errore che segnali è dovuto al fatto che non viene differenziato il client. Se inverti la sequenza lo vedi.
~Max