Я передаю данные через TCP / сокеты с помощью .Net (System.Net.Sockets)
Я использую этот код на стороне клиента:
tc.SendBufferSize = 4096
Dim fs As New FileStream(wfile, FileMode.Open, FileAccess.Read)
Dim rijn As New RijndaelManaged
Dim cs As New CryptoStream(fs, rijn.CreateEncryptor(CreateKey(key), CreateIV(IV)), CryptoStreamMode.Read)
Dim bytesToSend(tc.SendBufferSize) As Byte
Dim numBytesRead As Integer
Do
numBytesRead = cs.Read(bytesToSend, 0, bytesToSend.Length)
tcp_str.Write(bytesToSend, 0, numBytesRead)
Loop Until numBytesRead = 0
tcp_str.Flush()
cs.Close()
И этот кодна стороне сервера:
Dim FS As New FileStream(CompleteFileName, FileMode.Append, FileAccess.Write)
Dim CS As New CryptoStream(FS, Rijn.CreateDecryptor(DataExchangeKey, DataExchangeIv), CryptoStreamMode.Write)
Tcp_Client.ReceiveBufferSize = 4096
Dim bytesToRead(Tcp_Client.ReceiveBufferSize) As Byte
Dim numBytesRead As Integer = 0
Do
numBytesRead = Tcp_NetStream.Read(bytesToRead, 0,Tcp_Client.ReceiveBufferSize)
CS.Write(bytesToRead, 0, numBytesRead)
Loop Until numBytesRead = 0
Console.WriteLine("Finished")
CS.FlushFinalBlock()
CS.Close()
FS.Close()
Но сторона сервера не покидает Do / Loop, более того, она никогда не записывает последний буфер и никогда не делает CS.FlushFinalBlock ()
Любые идеиПочему?
Спасибо за помощь.