二、在应用中升级----网络部分
刚开始接触网络编程不久,这里仅仅是作为记录,大神勿喷哈,有想法咱们可以留言讨论滴。
该部分要解决的主要是两个问题,一个服务器端,一个客户端。
服务器端负责文件的准备,客户端负责文件的接收以及修改对应的文件。
这里采用epoll方式进行通信,允许多机连接服务器端。
服务器端:
这里我考虑的主要问题是:怎么实现让客户端知道升级哪部分,例如我想升级u-boot或者内核,那么是不是服务器段需要通知客户端我要升级哪部分。答案是肯定的,因此我详设计一个update.conf配置文件,用来说明升级哪部分,以及要升级的文件系统的路径,另外还需要一个使能标志,还需要其他么?有人给出意见么?谢谢了。
客户端:
该部分考虑的问题主要是,读取服务器端的配置文件是否存在,然后判断使能标志,读取升级的内容配置,进而去处理升级的任务。这里有个问题,是否需要考虑断点续传呢?我感觉暂时没需要,局域网内传输,而且只是u-boot、内核、部分的文件系统文件,也不是整个文件系统几百MB,所以无需断点续传,即使突然断线,重新连接下载即可。
为了升级好管理,在根文件系统目录下建立一个update文件夹用于存放下载的文件,完成升级后会自动删除下载的所有文件(不知道这样好不好)。
有一个新想法,在之前的模式上做个改动。Linux系统使用socket获取网络上的升级文件,放到指定的分区,在Linux系统中仅仅做这个任务,剩下的是重新启动系统,所有的升级覆盖工作交给u-boot完成。
这样的好处是,既然不是在Linux中升级,那么就无需理会是否应用程序有进程执行,直接覆盖要升级的文件即可,而且该方法允许升级整个文件系统。
后面的记录将会已此为蓝本。
二、在应用中升级----网络部分相关推荐
- 【Log】(二)Java 中的日志框架 JCL、SLF
[Log](一)Java 中的日志框架 JUL.Log4j [Log](二)Java 中的日志框架 JCL.SLF [Log](三)Java 中的日志框架 logback.log4j2 前言 JUL ...
- 剑指offer:面试题04. 二维数组中的查找
题目:二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- php查找二维数组下标,PHP实现二维数组中的查找算法小结
本文实例讲述了PHP实现二维数组中的查找算法.分享给大家供大家参考,具体如下: 方法1:silu从左下角最后一行的第一个元素开始,遍历.如果小于target 则遍历该行的所有元素,找到结束.如果大于继 ...
- 求二维数组中最大子数组的和
任国庆 张博 之前我们讨论了在一维数组中求最大子数组的和,在此基础上我们开始讨论二维数组的最大子数组. 求二维数组的最大子数组思想是建立在以为数组.首先将数组的第一列看成一个一维数组,找到该列的最大 ...
- 剑指offer_第1题_二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同) 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整 ...
- 数组-二维数组中的查找
题意: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 示例: ...
- VC++中从txt文本中读取数据并且存到二维数组中
这几天因为在做作业,所以不仅会想到这一类有关的问题.现在我需要实现的是讲txt文件的数据读取出来并且存储到一个二维数组中.,首先为了对待什么样的矩阵我们都可以读取,我们就要设置一个动态的矩阵,这样当我 ...
- 剑指offer:二维数组中的查找python实现
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- 剑指offer:二位数组中的查找
准备找实习期间,复习一下数据相关内容,刷刷题. 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样 ...
最新文章
- 进程和线程基础知识全家桶,30 张图一套带走
- C++多线程中互斥量std::mutex与模板类std::lock_guard
- twitter自定义api_为Twitter4j创建自定义SpringBoot Starter
- linux复制文件跳过相同,Linux cp指令,怎么跳过相同的文件
- 3ds max删除了对象后,还是将原来所有对象输出的原因
- 删除目录文件html代码,ASP创建目录、删除目录,删除文件代码范例
- HTML+CSS+JS实现 ❤️酷炫的canvas全屏背景动画特效❤️
- 机器学习里的kernel是指什么?
- 白噪音和粉红噪音煲机_白噪音信号的概念及基本理论
- axure rp9是什么软件?如何在Mac中安装使用?
- 阿里p7java什么水平_转头条:阿里p7架构师:三年经验应该具备什么样的技能?
- CentOS8设置网络安装源
- [Unity]寻路导航
- 什么是双线双IP,什么叫双线双IP
- 茫茫沧海,你终成了我无法逾越的泅渡
- LeetCode 661. Image Smoother
- 计算机怎么一键到桌面快捷键,关于添加一键返回桌面快捷键在win10电脑中的技巧...
- 完整版:交换机工作过程和原理
- Android 9 自动恢复出厂设置问题(auto-recovery)
- 大型IT企业内部数据分析的现状和发展趋势
热门文章
- java基础总结(小白向)
- android分辨率对应关系,android各dpi与分辨率的对应关系
- 中如何直接使用方法返回的值_java基础-2-方法、面向对象
- node mysql 事件循环_NodeJs 的 Event loop 事件循环机制详解
- mysql 5.1.17 redis_redis作为mysql的缓存服务器(读写分离)
- mysql分页查询limit_MySQL查询语句(where,group by,having,order by,limit)
- dateformat java_java常用API之DateFormat
- sublime text3 添加到右键菜单
- 一次性汇总了 30+ 字符串常用处理方法
- 13个知识点,系统整理Python时间处理模块Datetime