Reliable file transfers


First of all a very happy 2007 :)

I'm a student with some programming experience, but not too much.

Last year, I wrote a client/server checkers application, that allows
multiple players to invite eachother and play a checkers game. This program
exchanges some objects (or object properties) over a network, and is of
course fully threaded.
This project was completed with some guidance at school (lessons, lab

This time I'm all on my own, and I do have some questions...
I have to write a client/server based application, which allows a client to
select some specific files and/or folders to be backed up at the server
side. The server should be able to handle multiple clients at a time. To be
clear: server and client applications are written by me in Java.

So far, I've been taking some parts out of my previous project (the raw
client/server model), so I'm able to establish a connection between a
client, multiple clients in fact, and the server.

My biggest concern at the moment is how I could guarantee reliable file
transfers between a client and the server. As I've explained before, so far
I've only sent serialized objects (object types that both sides know)
between a server and a client.
This time I should be able to send files, of variable length/type/..., from
a client machine to the server. Integrity of data is very important of

Considerations/thoughts so far:
- What are the easiest ways to send a file from a to b?
- What API classes can/should I use that provide integrity/reliability
- Implement a protocol such as FTP? How?

The program is not intended to be used in any real situation, it's just a
student's project. So the basics should work (>> backup files from client
to server), and it doesn't have to be way too complex (limited development
time) .

Can anyone please explain to me how I should do this?

All tips and tricks, demo codes, urls,... are welcome!

Thanks a lot in advance!

"Bits don't byte..."