A client-server application for copying files between computers using multiple parallel TCP connections.
The project was developed for the Concurrent Programming course and focuses on applying Java concurrency concepts to network file transfers.
- Client-server architecture
- File transfer using TCP sockets
- Multiple parallel TCP connections
- Recursive directory scanning
- Concurrent file transfer tasks
- Detection of already downloaded files
- Basic support for resuming partially downloaded files
- JavaFX user interface
- Configurable number of TCP connections
The project demonstrates several Java concurrency mechanisms:
- ExecutorService and thread pools
- Blocking queues
- ConcurrentHashMap
- CountDownLatch
- Producer-consumer communication
- Poison pill pattern
- Parallel network operations
- Java
- JavaFX
- Java Sockets
- Java Concurrency API
- TCP/IP
- Maven
Developed for the Concurrent Programming course.