接收到客户端的字节数组大小与从WCF服务发送的字节数组大小不同

时间:2019-07-18 05:40:48

标签: arrays vb.net wcf return difference

我有一个自托管WCF服务,该服务正在使用BinaryReader读取大文件并将字节数组返回给客户端

服务拆分文件为部分,每部分10MB(10485860字节)

但是客户每部分收到13981237字节,为什么会有这种差异。

这使我的文件损坏了

这是我来自WCF的代码

typeDescriptor.AddAttributes

这是我的客户代码

TypeDescriptor.AddAttributes(this.button1, new DesignerAttribute(typeof(object)));

这是我的WCF服务完整代码

 myblocksize = 10485860
 my_bytearray = my_ibinaryreader.ReadBytes(myblocksize)
 my_ibinaryreader.Close()
 Return my_bytearray

1 个答案:

答案 0 :(得分:-1)

@AlessandroMandelli使用以下代码将字节数组写入文件

首先从WCF获取文件大小(例如:425000000字节-435 MB)

并使用filesize \ 104857600计算零件数(43个零件示例)

并使用for语句获取所有部分

在WCF中按当前部分查找* 104857600

请检查以下代码

dim myfileStream as filestream = new Filestream ("C:\aa.rar", filemode.create)

 dim partcount as integer = filesize \ 104857600

dim myWebClient as new WebClient

  for i as integer = 0 to partcount -1

       bytearray = myWebClient.DownloadData("SERVICEURL?file=bla.rar&currentPartNumber=myPartNumber")

    if not isnothing(byteArray) then

     myfileStream.Write(byteArray, 0 , byteArray.length)

     endif

next