tcp传文件,接收失败的有关问题
tcp传文件,接收失败的问题
/// <summary>
/// 发送文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="stream"></param>
/// <returns></returns>
internal bool SendFile(string filePath, NetworkStream stream)
{
FileStream fs = File.Open(filePath, FileMode.Open);
int readLength = 0;
byte[] data = new byte[_blockLength];
//发送大小
byte[] length = new byte[8];
BitConverter.GetBytes(new FileInfo(filePath).Length).CopyTo(length, 0);
stream.Write(length, 0, 8);
//发送文件
while ((readLength = fs.Read(data, 0, _blockLength)) > 0)
{
stream.Write(data, 0, readLength);
}
fs.Close();
return true;
}
/// <summary>
/// 接收文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="stream"></param>
/// <returns></returns>
internal bool ReceiveFile(string filePath, NetworkStream stream)
{
try
{
long count = GetSize(stream);
if (count == 0)
{
return false;
}
long index = 0;
byte[] clientData = new byte[_blockLength];
if (File.Exists(filePath))
{
File.Delete(filePath);
}
string path=new FileInfo(filePath).Directory.FullName;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
FileStream fs = File.Open(filePath, FileMode.OpenOrCreate);
try
{
//计算当前要读取的块的大小
int currentBlockLength = 0;