高性能TcpServer - 4.文件通道(处理:文件分包,支持断点续传)
高性能tcpserver - 2.创建高性能socket服务器socketasynceventargs的实现(iocp)
高性能tcpserver - 3.命令通道(处理:掉包,粘包,垃圾包)
高性能tcpserver - 4.文件通道(处理:文件分包,支持断点续传)
应用场景:
升级程序
流程:终端->查询服务器版本比较->升级程序(获取包数,获取各包数据)->数据拼装生成文件->最后更新服务器上该设备的版本信息
分包代码段:
static dictionary<int, string> readfile(string path)
{
dictionary<int, string> dicfiledata = new dictionary<int, string>();
filestream fs = new filestream(path, filemode.open);
binaryreader binreader = new binaryreader(fs);
int bagindex = 1;
int dataindex = 0;
byte[] bbuffer = new byte[fs.length];
int bagsize = 235;// 一包数据大小
byte[] temp = new byte[bagsize];
binreader.read(bbuffer, 0, (int)fs.length);
for (int i = 0; i < bbuffer.length; i++)
{
if ((bagsize - 1) == dataindex || (bbuffer.length - 1) == i)
{
if ((bbuffer.length - 1) == i) temp[dataindex++] = bbuffer[i];
string data = ccommonfunc.tohexstring(temp, dataindex, false);
dicfiledata.add(bagindex, data);
bagindex++;
dataindex = 0;
temp = new byte[bagsize];
}
temp[dataindex++] = bbuffer[i];
}
binreader.close();
fs.close();
return dicfiledata;
}
测试:
上一篇: 戚夫人下场凄惨,刘邦生前已经尽力了