解决方案 »

  1.   

    就是你把收到的消息丢进byte数组里,头8位读出来是一个long,代表消息的长度。下一位是文件名的长度,byte型。然后在读出上一步读的byte这么长的位数,这就是文件名,后面的依此类推
      

  2.   

    len                    8                   整个消息长度,不包括这4个字节,类型为long
    =====================================================
    首先 后面写的不包括这4个字节 而长度为8字节 是否笔误? 我当做8字节讲
    你的整个消息是这样的:
    消息长度 文件名长度 文件名 文件数据长度 文件数据 mac码读取时按字节读取 头8个字节是总消息的长度(不包括这8个字节)
    第9个字节是文件名的长度,假设为x字节
    从第10个字节开始的x个字节就是文件名
    从(10+x)个字节开始的8个字节就是文件数据的长度,假设为y字节
    从第(10+x+8)个字节开始的y个字节就是文件数据
    从第(10+x+8+y)个字节开始的8个字节就是消息mac码
    这样消息就读完了
    正常的话 这时候从第9个字节到mac码结束的总长度应该是等于消息长度的,可以做个校验, 接收到这个长度的字节数后就不再接受本条消息的后续字节(如果有的话)了
      

  3.   

    是不是应该是这样的,本地文件保存的应该光指上面消息中的data,服务器通过解析这个data以及获取客户端的信息,得出这样的消息格式的数据,存储到文件中。
      

  4.   

    你看我说的这个对吗?是不是应该是这样的,本地文件保存的应该光指上面消息中的data,服务器通过解析这个data以及获取客户端的信息,得出这样的消息格式的数据,存储到文件中。谢谢你了!
      

  5.   

    你看我说的这个对吗?是不是应该是这样的,本地文件保存的应该光指上面消息中的data,服务器通过解析这个data以及获取客户端的信息,得出这样的消息格式的数据,存储到文件中。谢谢你了!
    本地文件保存的应该只是data, 客户端应该先读取本地文件并包装成指定的消息格式,然后传给服务器
      

  6.   

    是不是应该是这样的,本地文件保存的应该光指上面消息中的data,服务器通过解析这个data以及获取客户端的信息,得出这样的消息格式的数据,存储到文件中。客户端按照这个协议(格式)把数据发给你,你按照这个协议解析数据,把文件数据读出来写进文件,把文件名数据读出来给文件命个名,就这么简单