我正在制作一个程序,通过 TCP 以块的形式传输文件。现在,每次我在最后传输文件时似乎都没有写入,因此如果我尝试传输右下角的图片,则会出现故障。现在,我的第一个想法是,当我读取、传输和写入小于缓冲区长度的最终块时,我也写入了很多零。所以我尝试相应地更改最后一个缓冲区大小。然后我使用一个只写有 HELLO WORLD 的小文本文件进行了尝试,但是当我输入它,然后打开文件时,它是空的。
这是读取和发送代码,其中 range[0] 是第一部分, range[1 ] 是最后一部分:
byte[] buffer = new byte[DATA_BUFF_SIZE];
using (Stream input = File.OpenRead(file.Path))
{
Console.WriteLine("SENT PARTS # ");
for (int i = range[0]; i <= range[1]; i++)
{
Console.Write("PART " + i + ", ");
if (i == range[1])
{
buffer = new byte[input.Length - input.Position];
}
input.Position = i * DATA_BUFF_SIZE;
input.Read(buffer, 0, buffer.Length);
netStream.Write(buffer, 0, buffer.Length);
}
Console.WriteLine("LENGTH = " + input.Length);
}
Run Code Online (Sandbox Code Playgroud)
这是接收和编写代码:
int …Run Code Online (Sandbox Code Playgroud)