1. A method for encoding a source file to be transmitted to a receiver, comprising the steps of: (a) dividing the source file into a plurality of shares comprised of a plurality of packets; (b) generating a bit vector; (c) for at least one share, generating an FEC packet by XOR'ing a subset of packets from the plurality of packets in the share in accordance with the bit vector; and (d) repeating steps (b) and (c).