c# socket 大数据_c#socket怎么传输大数据
展开全部constintblockLength=512*1024;publicvoidSendFile(stringfilePath,NetworkStreamstream)//发送文件{//传输内容using(FileStreamfs=File.Open(filePath,FileMode.Open)){intreadLength=0;byte[]dat...
展开全部
const int blockLength=512*1024;
public void SendFile(string filePath, NetworkStream stream) //发送文件
{
//传输内容
using (FileStream fs = File.Open(filePath, FileMode.Open))
{
int readLength = 0;
byte[] data = new byte[blockLength];
//发送大小e69da5e6ba9062616964757a686964616f31333339663938
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);
}
}
}
public bool ReceiveFile(string fileName, NetworkStream stream) //接收文件
{
try
{
long count = GetSize(stream);
if (count == 0)
{
return false;
}
long index = 0;
int currentBlockLength = 0;
int receivedBytesLen = 1;
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
{
while (receivedBytesLen > 0 && index
{
byte[] clientData = new byte[blockLength];
receivedBytesLen = 0;
if (blockLength
{
currentBlockLength = blockLength;
}
else
{
currentBlockLength = (int)(count - index);
}
receivedBytesLen = stream.Read(clientData, 0, currentBlockLength);
fs.Write(clientData, 0, receivedBytesLen);
index += receivedBytesLen;
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return false;
}
return true;
}
private int GetSize(NetworkStream stream) //获取文件大小
{
int count = 0;
byte[] countBytes = new byte[8];
try
{
if (stream.Read(countBytes, 0, 8) == 8)
{
count = BitConverter.ToInt32(countBytes, 0);
}
else
{
return 0;
}
}
catch
{
return 0;
}
return count;
}
更多推荐


所有评论(0)