欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-02 13:31:12
高性能TcpServer - 1.网络通信协议 高性能TcpServer - 2.创建高性能Socket服务器SocketAsyncEventArgs的实现(IOCP) 高性能TcpServer - 3.命令通道(处理:掉包,粘包,垃圾包) 高性能TcpServer - 4.文件通道(处理:文件分包 ......

高性能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.文件通道(处理:文件分包,支持断点续传)