标签:-- 网络 elf 制作 固定 包括 设计 大小 客户端
1、继承的实现原理:深度优先,广度优先
print(F.__mro__)
2、组合指,在一个类中以另外一个类的对象作为数据属性
3、抽象类:从一堆类中抽取相同的内容而来的,包括数据属性和函数属性,只能被继承,不能被实例化,------归一化设计
import abc class All_file(metauclass=abc.ABCmeta): all_file=‘file‘ @abc.abctractmethod def read(self): pass
4、封装的概念
5、多次序列化到文件,读取出来是怎么样
6、instance(obj,cls)检查是否obj是类cls的对象
7、反射的概念
8、元类的概念
9、网络编程中解决粘包问题的两种形式:
9.1、远程执行服务端系统命令:
(1)引入subprocess模块与系统交互---引入管道的知识
(2)引入struct模块,先发报头的长度,再发报头(客户端根据接受完整的报头得到里面存储的文件长度)
obj = subprocess.Popen(cmd.decode(‘utf-8‘), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout=obj.stdout.read() # 字节类型
stderr=obj.stderr.read() # 字节类型
#3、把命令的结果返回给客户端
#第一步:制作固定长度的报头
header_dic={
‘filename‘:‘a.txt‘,
‘md5‘:‘xxdxxx‘,
‘total_size‘: len(stdout) + len(stderr) # 字节的长度 -------- 文件的大小
}
header_json=json.dumps(header_dic)
header_bytes=header_json.encode(‘utf-8‘)
#第二步:先发送报头的长度
conn.send(struct.pack(‘i‘,len(header_bytes))) # len(header_bytes)发送信息给客户端的字节长度
#第三步:再发报头
conn.send(header_bytes) # 客户端发两次
#第四步:再发送真实的数据
conn.send(stdout)
conn.send(stderr)
可以直接打包 发送数据的长度-----客户端解压依次即可
也可以间接发送数据的长度 先发head_dic报头长度,再发报头,,客户端解压报头 得到报头里面的数据长度
9.2、上传下载文件os.path.getsize(pt_path),文件的大小--字节的长度 --<class ‘int‘>
file_size = os.path.getsize(pt_path)
print(file_size,type(file_size))
290 <class ‘int‘>


标签:-- 网络 elf 制作 固定 包括 设计 大小 客户端
原文地址:https://www.cnblogs.com/foremostxl/p/9692324.html