[.NET] Socket BinaryFormatter MemoryStream

作者: a0tim (~TIM~)   2015-10-30 01:16:48
應用程式專案
目的:
送SQL查詢字串給server,收回傳序列化的DataTable再反序列化
client 接收及反序列化程式碼:
Case "DATATABLE" ' 承接回傳的DB查詢
Dim i = clientSocket.Receive(byteData)
Dim bf As New BinaryFormatter()
Dim ms As New MemoryStream(65534)
ms.Write(byteData, 0, i)
ms.Flush()
Thread.Sleep(200)
While i = 8192
i = clientSocket.Receive(byteData)
If i > 0 Then
ms.Write(byteData, 0, i)
ms.Flush()
Thread.Sleep(200)
End If
End While
ms.Seek(0, SeekOrigin.Begin)
resultDataTable = bf.Deserialize(ms)
請教各位前輩
只要我不加上Thread.Sleep讓MemoryStream在write後等待一段時間
最後在反序列化的時候就會出錯 在完成剖析之前已達資料流末端
這是為什麼?
小弟百思不得其解
作者: a0tim (~TIM~)   2015-10-30 01:23:00
ps. 不等待的話,最後的ms.length會少

Links booklink

Contact Us: admin [ a t ] ucptt.com