经典类、新式类,网络编程

一、经典类与新式类

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()

 

posted @ 2018-09-03 16:57  神神气气  阅读(188)  评论(0编辑  收藏  举报