因为python中一切皆对象,类也是对象,元类构造类,类是由元类实例化得到。
type 在python中是最顶层的类,虽有继承了type的类都叫做元类。
在python中所有的类都继承自object,(type也继承自object), 但是object类是由type创作的,其中type类也是有type创造的。
class Person(metaclass= 我自定义的元类)
__call__方法的应用
class Mymeta(type): def __call__(self): pass def __call__(self, *args, **kwargs): obj = object.__new__(self) obj
网络编程
1、
C/S 和B/S架构
C: client : 客户端, S: server:服务端 。
B:browser :如 浏览器, S: server ,服务端 。
b/s 结构本身也属于cs
学习网络编程的目的是为了cs结构的软件
C端-------网络-------S端
S端(服务端):
1、有固定的ip
2、稳定且一直运行,主持并发
网络
网络:网络连接介质和网络协议(osi七层协议:物理层,数据链路层,网络层,传输层,(会话层,表示层,应用层))。
五层协议是指将会话层,表示层和应用程序统称为应用程序。
物理层
表示电信号,是用高低电频发出,010101
数据链路层
把物理层的电信号分组,每一组叫一个数据报或者叫数据帧,每一数据帧都分成:报头head和数据data两部分
数据报
每一个报头都固定为18个字节,6:发送者地址,6:接收者地址,6:数据类型
Mac地址
发送者,接受者地址都是Mac地址
每块网卡都有一个唯一的mac地址(12位16进制表示,前六位表示厂商编号,后六位是流水线号)
广播
同一个局域网内通信,会出现广播风暴
网络层
ip 现在主要是用的是ipv4,在0.0.0.0到255.255.255.255这个范围内。因为数量有限不能表示出所有的网络设备,所以出现了ipv6.
子网掩码:可以通过子网掩码和ip判断两个ip是不是处于同一个网段内。ip和子网掩码是按照按位与运算运算。
ip 和Mac有转换关系
主机 172.16.10.10/24访问172.16.10.11/24
ARP协议:广播的方式发送数据包,获取主机的Mac地址学习:Mac地址和ip地址映射表
第一次接收到就会在ip/mac映射表中添加一条数据
任何一中协议都有头和内容
传输层
tcp协议
三次握手,四次挥手
服务器端(本机)
import socket
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.bind(('192.168.11.251', 8080))
soc.listen(10)
print('你好')
conn, addr = soc.accept()
print('hello')
print(addr)
data = conn.recv(1024)
print('接收到信息', addr)
conn.send(b'amaa')
conn.close()
soc.close()
客户端(本机)
import socketsoc = socket.socket()soc.connect(('192.168.11.251', 8080))soc.send(b'aaa')data = soc.recv(1024)print('收到服务端回信', data)soc.close()