Solo por curiosidad ¿por que udp y no tcp? Si te decides a usar udp tendras que enviar el archivo dividido en pequeños trozos, y no tendras forma de saber si llegaron a su destino ni en que orden. Tendras que realizar tu las comprobaciones pertinentes tanto en el origen como en el destino, es decir, el mismo trbajao que ya hace tcp. No entiendo porque en este caso te decides por udp
De todas formas si te decides a realizarlo con udp, yo lo haria de la siguiente manera. Mandaria mensajes udp de un tamaño fijo, para eso utilizaria un record, algo como esto:
Código Delphi
[-]
type
TPaquete = record
Numero: Integer;
Longitud: Integer;
Datos: array[0..127] of Bytes;
end;
Ahora el programa que envia partiria el archivo en trozos no mas grandes de 128 bytes. Con esa infroamcion rellenaria el record, donde numero seria la posicion que ocupa ese trozo dentro del archivo (0,1,2,3), Longitud el numero de bytes del array que pertenecen al archivo (nomalmente valdra 128, menos en el ultimo paquete que puede ser menor).
Por parte el receptor recibiria los paquetes y los colocaria en su lugar para recomponer el archivo, llevando la cuenta de los paquetes recibidos y comprobando asi que han llegado todos.
Tampoco estaria mal incluir en el record el numero total de paquetes o el nombre del archivo. Pero eso lo puedes dejar para mas adelante.
Lo dicho, piensate lo de TCP y si todavia quieres hacerlo por UDP y no sabes por donde empezar, vuelve a preguntar e intentare poner algo de codigo.