经典类、新式类,网络编程
一、经典类与新式类
1、在Python2的版本中有经典类和新式类,在Python3的版本中只有新式类
2、经典类和新式类的查找成员的顺序不一样。
经典类:一条道走到黑(深度优先)
新式类:c3算法(保留最后的根)
supper是遵循__mor__执行顺序
二、网络编程
1、基于socket模块实现网络通信
为什么网络通信发送的是字节而不是字符串
python3 send/recv 都是字节
python2 send/recv 都是字符串
服务端:
accept,阻塞:等待客户端来连接
recv , 阻塞:等待客户发来数据
客户端:
connect,阻塞:等待连接服务端
recv , 阻塞:等待服务端发送数据
三、简单的用户登录
客户端
1 import socket 2 client=socket.socket() 3 4 client.connect(('192.168.13.35',8000)) # 服务端的ip地址以及端口 5 6 name=input("请输入用户名") 7 pwd=input("请输入密码") 8 9 #向服务端发送数据(发送字节) 10 client.send(name.encode("utf-8")) 11 client.send(pwd.encode("utf-8")) 12 13 #接受服务端发送的数据 14 responed=client.recv(1024) 15 print(responed.decode("utf-8")) 16 17 client.close()
服务端
1 import socket 2 server=socket.socket() 3 #创建服务端socket对象 4 server.bind(("192.168.13.35",8000)) 5 6 #可等待的客户端量 7 server.listen(5) 8 9 #等待客户端连接 10 conn,addr=server.accept() 11 12 #接受客户端发送的数据 13 usename=conn.recv(1024) 14 usepwd=conn.recv(1024) 15 16 print(type(usepwd.decode("utf-8"))) 17 18 with open("b.txt","r",encoding="utf-8") as f1: 19 for line in f1: 20 line=line.strip() 21 if line.split(",")[0]==usename.decode("utf-8") and line.split(",")[1]==usepwd.decode("utf-8"): 22 conn.send(b"success to login!!!") 23 else: 24 conn.send(b"faill!!!!") 25 26 conn.close() 27 server.close()