We move a high quantity of large Video files (200mb - 2 GB each) across the internet.
We have a Linux server (ubuntu) hosted in a datacenter (1Gbps) operating an FTP server. Our clients upload video files using an FTP client. We later download those files to our restricted facility using multi-threaded HTTP.
Our clients complain that FTP uploads are slow and are not taking advantage of their full bandwidth.
What we require you to do:
We'd like you to research and implement a solution that can help us solve this issue.
Requirements:
- We need both server and client. Server should run on Linux, client software should support both Linux and Windows.
- Client should have a feature to stay online and mirror the server, with the capability to set priorities on files (which to download first)
- GUI for client (if possible, but not a requirement)
- Support for resume/ pause and resuming of interrupted downloads is needed.
- Integrity checks are required. Integrity of the files is very important to us.
- Frequently latency between client and server is around 150ms-250ms, but solution should also support high-latency links.
- No compression (video files are poorly compressed).
- Encryption is only required for authentication. We don't want to encrypt all the traffic as this will slow down the transfer.
Skills required are C Programming, C++ Programming, Java, Linux, Software Architecture