Hola...
Un socket, por definición es un canal de comunicación entre dos máquinas. Si quieres enviar la misma información a varias máquinas distintas, tendrás que usar sockets distintos. (O bien, cuando acabes un envío comienzas el siguiente, o bien, creando hebras que envíen cada una a un receptor distinto).
En cuanto a enviar la información, si miras la clase Socket, verás que no existe forma de escribir directamente. Usa los métodos getInputStream() y getOutputStream() y podrás utilizar read() y write() (O crea con los resultados objetos de I/O con buffer o Reader / Writer para leer o escribir por líneas).
Metelo en un bucle while y que te mande el fichero hasta el final.
En el otro lado, tendrás que recogerlo. En realidad, no debería importar cómo lo recojas, siempre debería devolver el fichero original.
Espero que te sirva.
Saludos.
Silverfox