A simple file transfer client using TCP.
- Design
- Usage
- Contributing
The file transfer system uses the following components:
delivery.sh
- Takes user input and executes eitherclient.py
orhost.py
protocol.sh
- Provides a developer interface for the protocolclient.py
- Send file(s) to specified IPhost.py
(server) - Listens for message fromclient.py
and saves the file(s) contents
Two protocols are used to communicate and transfer data:
Bytes | Description |
---|---|
1 | filename length |
32 | checksum |
32 | filename |
8 | filesize |
n | content |
Checksum will use the hashlib
library.
Hex | Description |
---|---|
0x01 | connection handshake |
0x02 | begin sending |
0x03 | end connection |
0x10 | start file |
Hex | Description |
---|---|
0xF0 | connection success |
0xF1 | modal mismatch |
0xF2 | Filename more than 256 characters/non ascii |
- Send file(s) to to ip -
./delivery.sh send IP FILENAME [FILENAME2 ..]
- Save file to specific location -
./delivery.sh receive IP DIRECTORY
- Get help on usage -
./delivery.sh -h
- Get help on specific mode -
./delivery.sh MODE -h
Contributors include Five Grant and Satchel Baldwin