厦门大学信息学院计算机网络课程项目
作者: chenxiaoquan233,fester,jrsmith12138,firstday1,luckydog691,Morstr
将指定文件夹的文件发送到另一个文件夹
成员sock改名为cmd_sock
添加一个socket指针,命名为data_sock,指向多个传输数据的sock
把set_up_connection()改为sock_init()函数,分平台定义
windows:
sock_init(SOCKET sock, const char* ip_addr, int port)
linux:
sock_init(int sock, const char* ip_addr, int port)
其中添加端口是否可用的检查
添加parse_arg()函数
parse_arg(int argc, char** argv)
首先判断参数是否合法
再判断路径是否存在
再判断是否有读权限
添加一个读取文件路径的函数
void read_path(char* path, char* buffer)---->完成 int read_path(const char* path,char *buffer[])
变更:传入变为二维数组,返回值为读取到的文件夹路径数目
递归读取path路径下的信息
每一个文件夹按照(双引号内格式)进行存储:
文件夹: "d 文件夹名\n"
文件夹名应该包括从path开始的相对路径
添加一个发送路径信息的函数
bool send_path_info(char* buffer)
从命令sock发送命令:
INFO
服务端返回一个端口
根据这个端口创建一个临时数据sock,从这个sock发送buffer内容
若长度过长需要切片
命令sock收到服务端的"INFO"作为回传则表示成功,否则重传
超过次数后告诉用户失败
添加一个常量 SEND_FREQ 表示最大重传次数,暂定为10
添加压缩函数(或调用库)
int zip(char* src, char* dest, int src_len)
将src中长度为src_len的数据压缩到dest中
返回压缩后的数据长度
添加发送指令的函数
void send_cmd(char* cmd)
修改send_file函数 先向服务器发送命令
SEND 文件名
等待服务端返回
OFFS 偏移量
然后向服务器发送
PORT
服务器返回
PORT 端口号
建立临时数据sock,向对应端口发送数据
添加参数检查函数
parse_arg(int argc, char** argv)
检查参数是否合法
再检查路径是否存在并具有读写权限
添加解析命令函数
INFO 调用parse_path
SEND 调用check_file
PORT 调用check_port
添加parse_path函数
parse_path(char* path)
从数据sock读入路径信息,回传INFO,解析后放入path中 之后调用set_dir函数
添加set_dir函数
set_dir(char* path)
对path中每一个路径进行检查,若不存在该文件夹则建立文件夹
添加文件检查函数
check_file(char* file_name,int file_length)
if 文件存在
if 日志存在
if 文件长度和日志记录长度相同
断点续传
其他情况皆从头开始传输
参数需要文件名和INFO中待传文件的文件长度 回传待传递的包,第一个int为待传递的包的数量,后续int为待传递的包的序号,重传则第一个int为0
添加检查端口函数 开始端口为
start_port = cmd_port > 1024 ? cmd_port + 1 : 1024
从start_port开始检查端口是否被占用
若是则依次加1
找到空闲端口后建立数据sock
从命令端口返回:
PORT 端口号
添加解压函数
int unzip(char* src, char* dest, int src_len)
将src中长度为src_len的数据解压到dest,返回解压后数据长度
在首次接受到INFO时,使用write_logfile函数写入包数量,再次调用写入文件长度 之后再每次接受包时写入这个包的序号 修改接收文件函数 每一个文件若未接收完全,则先将已传输的合并,再生成一个日志文件 格式为"文件名.FTlog"
(排名不分先后)
chenxiaoquan233:
邮箱: chenxiaoquan233@gmail.com
QQ: 770355275
fester:
邮箱: 1014483832@qq.com
QQ: 1014483832
jrsmith12138:
邮箱: 849070287@qq.com
QQ: 849070287
firstday1:
邮箱: 2602164122@qq.com
QQ: 2602164122
luckydog691:
邮箱: 1256161580@qq.com
QQ: 1256161580
Morstr:
邮箱: 260603965@qq.com
QQ: 260603965