通过socket方式上传文件A端, 发来上次收到的文件名,文件大小
B端, 通过A端已接受的文件大小, 从对应文件名中,继续发送A端未接收完的剩余数据例子文件, 200KBA端已接收了10KBB端, 读取文件, 发剩余190KB给A端B端如何从文件10KB之后的位置开始读取,发送数据给A端

解决方案 »

  1.   

    应该有个int bytesRead = respStream.Read 判断这个返回是不是10KB了
      

  2.   

    FileStream有个Position属性,可以设置当前流的位置,你将其设置为10*1024就可以了。
      

  3.   

    既可以通过 seek 跳到要读的位置上,, 从当前位置开始读或者 read 第二个参数直接指定偏移量
      

  4.   

    read 第二个参数 指的是在接收的byte数组中的偏移量,而不是在流中的
      

  5.   


    public FileContract DownLoadFile(string filePath, long offSet, object[] args)
            {
                if (File.Exists(Application.StartupPath + "\\" + filePath))
                {
                    using (FileStream fs = File.OpenRead(Application.StartupPath + "\\" + filePath))
                    {
                        FileContract file = new FileContract();
                        long allLength = fs.Length;
                        file.Name = filePath;
                        file.Length = allLength;
                        file.CreateTime = System.DateTime.Now;
                        file.Data = new byte[fs.Length - offSet > maxLength ? maxLength : fs.Length - offSet];                    file.OffSet = offSet;                    fs.Position = offSet;
                        fs.Read(file.Data, 0, file.Data.Length);
                        return file;
                    }
                }
                return null;
            }参考一下