2019-10-基于机器学习的数据挖掘平台-文件传输系统
这是基于机器学习的数据挖掘平台的一部分,我主要负责文件传输部分,下面为详细介绍
文件传输模块概述
1.文件传输功能模块
1.1单文件上传功能
客户端:通过python内置requests函数包向服务器发送post请求,在指定URL后面加上/upload/关键字从而方便服务器端识别,将所需要的任意数据格式的数据文件添加至http传输协议中的body部分中,发送至指定的服务器端,并等待服务器响应返回结果。此外,单文件上传功能具有多次重试功能,若服务器端接收不到相应客户端的post请求,客户端会重传3次,以避免因网络环境较差导致网络拥塞而使得服务器端接收不到文件,且相邻重传间隔时间为5秒。
服务器端:通过go语言中http内置的HandleFunc函数 在服务器端进行监听,若监听到关于上传文件的Post请求,且后缀的http请求地址为/upload/,则在服务器Log日志端记录请求类型,post请求发生的时间,并且解析该请求,将数据文件从http-body中解析出来,如果在接收请求和接收文件时发生意外错误,有相应的检测异常机制。最后在服务器端的相应文件夹下新打开一个文件,将解析出来的文件复制到服务器端,完成复制动作后,再将写文件的功能关闭。
1.2单文件下载功能
客户端:通过python内置requests函数包向服务器发送get请求,并且在指定的URL后面加上/downlad/的关键字,使得服务器端可以快速识别,最后在URL后面添加所需要下载的单个文件,发送至指定的服务器端,并等待服务器响应返回结果。除此之外,单文件下载功能具有多次重试功能,若服务器端接收不到相应客户端的post请求,客户端会重传3次,以避免因网络环境较差导致网络拥塞而使得服务器端接收不到文件,且相邻重传间隔时间为5秒。最后若客户端访问服务器时发生response-404的错误,会在客户端记录信息并及时输出文件不存在的提示性文字,若发生其他错误,则会将错误类型与错误
服务器端:通过go语言中http内置的Handle函数 在服务器端进行监听,若监听到关于上传文件的get请求,且后缀的http请求地址为/download/,则自动从get请求的http信息中过滤掉/download/前缀,从而解析出需要客户端下载的文件,将指定文件架下面的文件填入,然后根据添加下载文件的路由条目,借助Go语言实现自动响应下载文件功能。
1.3算法与数据文件同步功能
客户端:
①使用hashlib.md5()方法将文件加密为md5哈希值,并将相应的文件名和哈希值存储到字典中,等待与服务器端详细信息进行比较进而更新数据。
②使用get方法向服务器端请求服务器指定文件夹下的相关文件的文件名和md5哈希值,收到服务器的响应后,将相应中的数据以utf-8的编码格式转为字符串表达形式,并将文件名与文件的md5哈希值以字典的形式存储到客户端,进行比较。成功存储到客户端后,将http请求关闭。
③将前两步中得到的两个字典进行比较,分别将两个字典的键存入两个列表中称为列表A和列表B,若服务器端中文件名字不在本地客户端的列表中,将这部分文件名记录下来添加至另一个新列表C中等待下载。再查看A,B两个列表,若客户端列表中有部分文件名在服务器列表中没有显示,则说明这部分文件在客户端是冗余的,需要将这部分文件删除掉,因此将这些文件名添加至删除列表D中,并且更新本地客户端列表。最后,若客户端和服务器端的文件名相同,则比较这些文件的具体md5哈希值,若哈希值相等则忽略掉,若本地文件的md5哈希值与服务器端md5哈希值不同,则记录这部分文件名,将文件名添加至下载列表C中。
④根据上一步得到的删除列表D将相应文件删除,根据下载列表C将相应文件下载至本地,且下载数据算法等文件时会多次调用下载单个文件函数,新下载的文件会替换掉旧文件,从而实现文件同步。
服务器端:
通过go语言中http内置的HandleFunc函数在服务器端进行监听,若监听到关于上传文件的get请求,且后缀为getfileinfo时,服务器端会将http的请求方式记录并输出,同时使用time.now()方法记录get消息发出的时间,且将指定文件夹下的文件加密成md5哈希值,并将文件名和md5值添加至字典中,然后将字典信息添加到响应信息中,返回给客户端,等待客户端接收信息。
-
Notifications
You must be signed in to change notification settings - Fork 0
guobaoyo/Data-mining-platform-based-on-machine-learning---file-transfer-system
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
2019-10-基于机器学习的数据挖掘平台-文件传输系统
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published