110,534
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 文件拆分包
/// </summary>
/// <param name="packFlag">包标识</param>
/// <param name="fileName">文件名</param>
/// <param name="packSize">包大小 kb</param>
/// <returns></returns>
public void FileSplit(string packFlag, string fileName, int packSize)
{
byte[] Bytes = null;
Bytes = ReadFileStream(fileName); // 读取文件
string Zipstr = ZipString(Convert.ToBase64String(Bytes)); // 压缩字符串
int packNum = (int)Math.Ceiling(Zipstr.Length / (double)packSize); // 包总数
string pack = null;
prog._maxNum = packNum; // 进度条最大值
Thread progress = new Thread(() =>
{
for (int i = 0; i < packNum - 1; i++)
{
pack = Zipstr.Substring(i * packSize, packSize);
ws_Client.Send(DesEncrypt(
tSocket.Transport_UploadPacket + Separator +
packFlag + Separator +
i+ Separator +
pack, sKey));
UpProgress_fm.CrossThreadCalls(() => { prog._setProgress(i); });
}
// 最后剩余字节打一个包
pack = Zipstr.Substring((packNum - 1) * packSize, Zipstr.Length - (packNum - 1) * packSize);
// 向服务器发送包:套接字、包标识、包总数、包序号、包内容
ws_Client.Send(DesEncrypt(
tSocket.Transport_UploadPacket + Separator +
packFlag + Separator +
packNum + Separator +
pack, sKey));
});
ws_Client.Send(DesEncrypt(tSocket.Transport_UploadOver + Separator + packFlag, sKey));
});
}