- # 服务器
- import socket
- import hashlib
- import JSON
- sk = socket.socket()
- sk.bind(("127.0.0.1",8081))
- sk.listen()
- def check_pwd(usr,pwd):
- hs = hashlib.md5(usr.encode())
- hs.update(pwd.encode())
- res = hs.hexdigest()
- return res
- while True:
- conn,addr = sk.accept()
- msg = conn.recv(1024).decode()
- dic = JSON.loads(msg)
- # 客户端发送的账号密码 32 位的十六进制字符串
- res = check_pwd(dic["username"],dic["password"])
- sign = False
- with open("pwd.txt",mode="r",encoding="utf-8") as fp:
- for i in fp:
- usr,pwd = i.strip().split(":")
- if usr == dic["username"] and pwd == res:
- conn.send("1".encode())
- sign = True
- break
- if not sign:
- conn.send("0".encode())
- break
- conn.close()
- sk.close()
- # 客户端
- import hashlib
- import JSON
- import socket
- sk = socket.socket()
- sk.connect(("127.0.0.1",8081))
- usr = input("输入账号:")
- pwd = input("输入密码:")
- dic = {"username":usr,"password":pwd,"operate":"login"}
- res = JSON.dumps(dic).encode()
- sk.send(res)
- sign = sk.recv(1024).decode()
- if sign == "1":
- print("登录成功!")
- else:
- print("登录失败!")
- sk.close()
来源: http://www.bubuko.com/infodetail-3289919.html