Si no estoy equivocado en la versión 1.1 del protocolo http se puede mantener la conexión abierta usando "keep-alive", otra cosa es que tanto el cliente como el servidor soporten esta característica y estén dispuestos a utilizarla. Un servidor esta en todo su derecho de responder a un "Connection: keep-alive" con un "Connection: Close", y se acabo lo que se daba
Pero metiéndonos ya en estos líos, yo le sugiero al Sr. Sombrero que se deje de sockets y utilice Indy, Wininet o alguna cosa similar, porque ellos mismos se encargaran de manejar la conexión y "mantenerla viva" si así se lo indicas, eso si, siempre que el servidor este de acuerdo.