← 返回文章

基于Libuv的文件更新服务器设计

目标:使用Libuv库,以TCP为基础,建立内部文件传输协议规格。 端口:4898 下载服务: 1.文件更新系统 2.文件附件系统 上传服务: 1.客户端上传文件(大小限制) 2.上传文件目录体系 3.短目录设计 消息…

#C++
C++

目标:使用Libuv库,以TCP为基础,建立内部文件传输协议规格。 端口:4898 下载服务: 1.文件更新系统 2.文件附件系统

上传服务: 1.客户端上传文件(大小限制) 2.上传文件目录体系 3.短目录设计

消息包格式: 消息包大小|消息包内容|二进制内容 只有上传和下载回应才有二进制内容部分 消息包内容以Boost做序列化,暂时以TEXT格式方便调试,以后考虑使用BIN。

传输协议规范(回应参考HTTP协议):

        Request格式:
        {
            "Client":Launcher,
            "Hub":"",
            "Command":"Get",
            "Filename":filename,
            "ContentBegin":0,
            "ContentEnd":0,
            "ContentLength":254889
            "Body":""
            "Message":JSON
        }

        {
            "Client":Launcher,
            "Hub":"",
            "Command":"Upload",
            "Filename":filename,
            "ContentBegin":0,
            "ContentEnd":0,
            "ContentLength":254889
            "Message":JSON
            "Body":0xF33423u23i
        }

        {
            "Client":Launcher,
            "Hub":"",
            "Command":"Query",
            "Filename":filename,
        }

命令: Get 获取文件 Query 获取文件信息 Delete 删除文件 Upload 上传文件 Rename 重命名文件

Hub用于查询对应服务端实例的配置目录

    Response格式:
        如请求成功:
        {
            "State":200,
            "Filename":filename,
            "FileLength":1856899,
            "ContentLength":254889,
            "Body":73434A3459,
            "Message":JSON
            "Finish":true
        }

        {
            "State":202,
            "Filename":filename,
            "FileLength":1856899,
            "Message":"{"MD5":FD44F1935295 ; "PATH":"D://update" }"
            "Finish":true
        }

如果请求文件不存在:

        {
            "State":-4059,
            "Error":"file not exist!",
            "Filename":filename
        }

操作成功状态码:

        2**:操作成功收到,分析、接受
            200——下载成功
            201——上传成功
            202——查询文件讯息成功
            203——返回信息不确定或不完整
            204——请求收到,但返回信息为空
            205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
            206——服务器已经完成了部分用户的GET请求
            207——刪除文件成功

服务器操作失败状态码:

        5**:服务器执行一个完全有效请求失败
          500 - 内部服务器错误
          500-11 服务器关闭
          500-12 应用程序重新启动
          500-13 - 服务器太忙
          500-14 - 应用程序无效
          501 - 未实现
          502 - 网关错误