Tim> I'm not sure I understand why you're using asynchat and asyncore. Makes it (relatively) easy to talk to multiple connections simultaneously without resorting to multiple threads. It requires you to reorient how you look at such things, but once you understand the model it's pretty easy to program. Skip