增强型文件传输服务器
本项目包含一个基于Go语言开发的文件传输服务器和客户端,支持文件的压缩、断点续传以及文件完整性校验。
server.go
: 服务器端代码client.go
: 客户端代码uploads/
: 服务器接收并存储上传文件的目录server.log
: 服务器日志文件
- 安装 Go 1.16 或更高版本。
服务器端和客户端均使用 github.com/fatih/color
库来实现终端输出的彩色显示。请在编译前安装该依赖:
go get github.com/fatih/color
进入服务器代码所在目录,运行以下命令编译服务器:
go build -o server server.go
进入客户端代码所在目录,运行以下命令编译客户端:
go build -o client client.go
./server -port=59999
-port
: 指定服务器监听的端口,默认为59999
。
服务器启动后,会在终端显示欢迎信息和当前的传输状态,包括活跃连接数、传输的总字节数和当前速度等。
./client -file=/path/to/file -ip=server_ip:59999
-file
: 指定要传输的文件路径。-ip
: 指定服务器的IP地址和端口,默认为localhost:59999
。
./client -path=/path/to/directory -output=output.zip -ip=server_ip:59999
-path
: 指定要压缩的目录路径。-output
: 指定压缩后的ZIP文件名。如果不指定,默认使用目录名加.zip
后缀。-ip
: 指定服务器的IP地址和端口,默认为localhost:59999
。
客户端在传输过程中会自动检测是否需要断点续传。如果传输中断,再次运行相同的传输命令,客户端会从上次中断的位置继续传输。
服务器运行过程中会生成 server.log
文件,记录详细的日志信息,包括客户端连接、文件传输状态及错误信息等。
服务器接收到的文件会存储在 ./uploads
目录下。请确保服务器运行目录下存在该目录,或者在代码中修改 storageDir
变量指定其他存储路径。
- 网络稳定性: 为了确保传输的稳定性,建议在网络较为稳定的环境下进行大文件传输。
- 文件权限: 确保服务器有权限在指定的存储目录中创建和写入文件。
- 安全性: 当前版本未实现身份验证和加密传输,请在生产环境中考虑增加安全措施。
- 错误处理: 客户端在传输过程中会尝试多次重试,如果所有重试均失败,请检查网络连接和服务器状态。