Extra specifications for Java version:
The program should be able to do multiple simultaneous file transfers (atleast 3 total). The file transfers should all proceed at the same transfer rates (do not transfer one at a time). The file transfers can initiate from either side, so you can have 2 files being transferred from A to B and 1 file from B to A.
Notes for Java:
Polling can be accomplished by using the "available()" method in the InputStream class. It returns the number of bytes that can be successfully read from the stream.