Lo siento, creo que mi error viene de mi desconocimiento del componente TServerSocket. Yo estoy acostumbrado a usar los socket con las funciones de la API y nunca he tenido problemas para mandar un monton de bytes (incluso un archivo entero cargado en memoria) con una sola instruccion
send y luego recogerlo poco a poco del otro lado con la instruccion
recv.
Supongo que habra alguna caracteristica de este componente que me paso por alto y que no permite hacer esto. Ademas tengo que aclarar que normalmente uso sockets del tipo Blocking, lo que me lleva a pensar que el problema tambien pueda venir en que tu usas del tipo NonBlocking es decir que realizan sus operaciones de forma asincrona, y aunque no lo puedo asegurar, supongo que utiliza algun tipo de buffer internamente para realizar las operaciones.
Una vez mas disculpas, a veces las ganas de ayudar me lleva a meter la pata