在WCF中使用流式传输请求传输大型文件时,如何确保在客户端收到数据。我的意思是如何确保可靠的数据传输并获得认可。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以尝试在发送数据之前创建数据的校验和,然后在收到数据后,您可以再次计算校验和并验证它是否正确。
答案 2 :(得分:0)
我们做的是在发送之前在字节数组上计算MD5哈希值,然后将带有字节包的文本值发送给主机,然后主机计算另一个MD5哈希值(同样,根据字节数)并且预期的MD5哈希值(由客户端发送)与在主机上新近计算的哈希值之间的比较。如果它们不相同,您知道您没有获得完整的文件,强制您在响应中发回该错误。
这是我们用来计算哈希值的小函数的一个例子:
Protected Function GetMD5HashFromBuffer(ByVal oBuffer As Byte()) As String
Dim md5 As System.Security.Cryptography.MD5 = New MD5CryptoServiceProvider
Dim retVal() As Byte = md5.ComputeHash(oBuffer)
'fileSize = file.Length
'file.Close()
Dim sb As StringBuilder = New StringBuilder
Dim i As Integer = 0
Do While (i < retVal.Length)
sb.Append(retVal(i).ToString("x2"))
i = (i + 1)
Loop
Return sb.ToString
End Function