标签:-- 网络 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