Hola.
Has considerado el uso de las
indy. El servidor TCP presenta varias ventajas con respdecto del ServerSocket. Básicamente, es un servidor multihilos que atiende "mejor" a los clientes... además, en tu caso particular, el evento OnDisconnect tiene un puntero al thread del cliente, donde tenes toda la información "puntual" de su conexión... de esa forma, una misma ip puede estar conectada 20 veces, sin provocar confusión en el servidor...
Hasta luego.