Probably the simplest way is to install ftp server software on the server.
Otherwise, you'll need to define the protocol to be used. Then, implement that protocol on your client and server applications.
If multiple clients could be downloading at the same time, you will need to have the server provide a file transfer port number to the client for use in transferring the file. To be flexible, I would have the client specify the file name it wants to download. Then, have the listen on that port for the client to initiate the transfer. Q: do you need to provide a directory listing ability? i.e., the client requests a list of files available for download; the server gets a directory listing, formats it for transfer (as a string,) responds with a message containing the data (and crc,) and after the client calculates crc at it's end, replies with ack/nack to signal success/failure.
The winsock server instance reads the specified file, 1 K or so at a time. sends the file chunk, along with a checksum and a chunk length. The client needs to calculate the checksum at completion of the chunk, then ack the server if the file chunk CRC matched the crc sent by the server, or NACK of it didn't.
Finally, after all the individual chunks have been transferred and reassembled at the client end, the file transfer is complete. The server notifies the client of this fact, and waits for response from the client. On receipt of the ack or after a timeout, the port is released.
If you're determined to write your own file transfer routines, I suggest you google the XModem
specification (popular BBS file transfer protocol in the 80's,) and implement something similar to this.