puedes crear un archivo temporal (ya sea .txt o cualquie rotro formato) para cada usuario que se conecta, por ejemplo se conectan los usuarios "pepe @algo.com" y "jose @algo.com"; entonces cuando se conecta "pepe @algo.com" a las 12:11:01 se crea el archivo:
"pepe.tmp"
y cuandos e conecta "jose @algo.com" a las 12:30:50:
"jose.tmp"
En cada uno se pone el tiempo en que se conectaron, entonces en pepe.tmp nos queda 12:11:01 y en jose.tmp 12:30:50...
entonces creas una funcion que cada X tiempo (por ejemplo, cada 1 minuto) recorra el directorio donde estan estos archivos y lea archivo por archivo; comparando el tiempo actual con el que esta en los archivos; si la diferencia es igual o mayhor al tiempo que se necesita para desconectarlo, lo desconectas...
Para saber si tiene actividad o no el usuario depende de como lo hagas al programa... Lo que puedes hacer es que cada tecla que se envie al servidor, el programa servidor actualize la hora del archivo que le corresponde al usuario ¿entiendes?... o sea; pasado 20 minutos de conexion pepe @algo.com hablo (es decir, tubo actividad), entonces por ejemplo si envio la palabra "Hola"; el servidor procesa la palabra, da una respuesta al cliente que envio la palabra (como para decirle que se recivio la palabra) y a su vez, el servidor actualiza la hora de pepe.tmp...
nose que mas decirte :S cualquier cosa postea

salu2