个人学习tcp socket网络编程demo。基于Linux socket接口实现了多客户端上传下载、大文件传输和断点续传。
sudo apt install cmake
cmake -v
sudo apt-get install libncurses5-dev
git clone https://github.com/cyicz123/file-server-client.git
cd file-server-client
mkdir build && cd build
cmake ..
make
sudo make install
在项目根目录就会生成bin文件夹,内部存放在ser和cli的服务端、客户端程序。
1. 帮助信息
./cli -h # 或者 ./cli --help
# 打印输出
Usage: file-client [OPTION]... [FILE]...
A file transfer tool, support upload and download.
Mandatory arguments to long options are mandatory for short options too.
-s, --ser_addr IP:Port Set the server address to IP :port. The default address is 127.0.0.1:8080.
-l, --ls [FILE-DIRECTORY] View remote server downloadable files.
-d, --download FILE Download the file.
-u, --upload FILE Upload the file.
-h, --help Print the help info.
-v, --version Print the version.
2. 测试上传
生成10G大小测试文件
dd if=/dev/zero of=test_data_10G bs=1G count=10
./cli -u test_data_10G
P.S. 当超过GB大小的文件上传,大概率会出错,最后的若干字节会丢失。
3. 查看服务器文件列表
./cli -l
4. 测试下载
mv test_data_10G storage/ # 因为现在上传功能存在问题。所以需要手动将待下载文件移至服务器目录下,即storage目录
./cli -l # 查看服务器文件列表
./cli -d test_data_10G
所有上传下载均支持断点续传,按ctrl c
取消传输后,重新执行命令即可断点续传
- 解决大文件上传卡死、错误的问题
- 进度条加载支持多线程
- 日志记录支持多线程
- 日志记录增加客户端连接ip信息