码迷,mamicode.com
首页 > 其他好文 > 详细

高性能TcpServer - 4.文件通道(处理:文件分包,支持断点续传)

时间:2019-07-24 16:34:00      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:代码下载   ict   comm   tar   static   strong   nbsp   sock   网络通   

高性能TcpServer - 1.网络通信协议

高性能TcpServer - 2.创建高性能Socket服务器SocketAsyncEventArgs的实现(IOCP)

高性能TcpServer - 3.命令通道(处理:掉包,粘包,垃圾包)

高性能TcpServer - 4.文件通道(处理:文件分包,支持断点续传)

高性能TcpServer - 5.客户端管理

高性能TcpServer - 6.代码下载

 

应用场景

升级程序

流程:终端->查询服务器版本比较->升级程序(获取包数,获取各包数据)->数据拼装生成文件->最后更新服务器上该设备的版本信息

分包代码段:

        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;

        }

测试:

 技术图片

 

高性能TcpServer - 4.文件通道(处理:文件分包,支持断点续传)

标签:代码下载   ict   comm   tar   static   strong   nbsp   sock   网络通   

原文地址:https://www.cnblogs.com/chen1880/p/11238734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!