我正在尝试通过 TCP 将文件从服务器发送到客户端。
服务器端代码,发送文件:
NetworkStream netStream = client.GetStream();
FileStream fs = new FileStream("usb.exe",FileMode.Open, FileAccess.Read);
byte[] data = new byte[fs.Length];
fs.Read(data,0, data.Length);
fs.Flush();
fs.Close();
netStream.Write(data, 0, data.Length);
netStream.Flush();
客户端代码,接收文件:
FileStream str = new FileStream("usb.exe", FileMode.Create, FileAccess.Write);
byte[] data = new byte[1024];
while ((dataCitit = netStream.Read(data,0, data.Length)) > 0)
{
Thread.Sleep(25);
Application.DoEvents();
str.Write(data, 0, dataCitit);
totalbytes += dataCitit;
}
str.Close();
有人能指出我哪里弄错了吗?
该文件有 1036 kb,它只发送 1032 kb 然后卡住它不会退出客户端的 while 循环。
此外,如果我关闭服务器并快速打开它,它会发送最后一个字节并且文件会完全发送。(此文件完美打开)
我认为这是服务器端的问题,不是发送所有字节,而是为什么和在哪里......