速盘项目(speed盘)

在这里插入图片描述
1、客户端与服务器连接成功后,都执行相同的业务逻辑,(任务队列中的任务都是相同的)。
首先判断是什么请求。
如果是登录请求,查询mysql,查询在线用户set集合,如果此用户已经在线了,返回客户端已经异地登录关闭连接。防止多机同时登录。
如果是上传下载文件请求,客户端开启线程使用异步的方式进行文件上传,支持多文件同时上传下载。客户端传给服务器自己的user对象,服务器判断set集合有没有这个用户,是否在线,如果不在线,认为此请求是网络攻击。如果此用户已经在线,此请求合法,客户端查询本地文件如果存在此文件名,则进行断点续传,否则进行文件上传。由于fastdfs不支持断点重传,upload函数只能返回是否上传成功,所以客户端不能直接上传文件到fastdfs,这样不能实现断点重传的功能。客户端和服务器进行tcp通信,服务器保存临时文件,传输完毕之后,服务器把临时文件上传到fastdfs,更新数据库的文件信息表,删除临时文件。

2、为什么要保持长连接?
因为服务器要时刻知晓客户端是否是登录状态,只有在登录状态下才可以进行文件传输。防止黑客编程直接访问进行文件上传,攻击服务器。

3、保存偏移量
客户端send函数只是把数据放入到缓冲区,由滑动窗口和拥塞窗口来决定何时发送,如果直接放入send就认为发送成功是不可取的。而且服务器接接收数据之后,要把数据写入临时文件,如果写入失败呢,如何保证数据的落盘。可以自己设计应用层协议,当服务器写入临时文件成功之后,服务器把文件的末尾偏移量发送给客户端做保存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值