I have written a application using Winsocks and TCP which sends a file across the network.

After the transfer is complete I check the file integrity using a MD5 checksum. Here are the results.

No CPU load on server : No CPU load on client - Fine (md5 checksums match)
No CPU load on server : CPU load on client - Fine (md5 checksums match)
CPU load on server : No CPU load on client - DIFFERENT checksum on received file on every transfer!

So the problem is when the server (host of the file) has 98-99% usage the file isnt sent correctly. The weired thing is even though the md5 hash is different the byte count on both the files is the same.

BTW, im using the WinRar benchmark to put load on the CPUS. Its using a LAN 10/100Mb connection.

Can anyone explain this? Im really not sure how I can fix this.

Thanks