直接上代码
服务端
import socket,os,hmac,pickle,threading,datetime
class Server:
def __init__(self,secret_key):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.addr = ('127.0.0.1', 8088)
self.users = {
}
self.secret_key = secret_key
def start_server(self):
try:
self.sock.bind(self.addr)
except Exception as e:
print(e)
self.sock.listen(5)
print("服务器已开启,ip地址为{}等待连接...".format(self.addr))
self.accept_cont()
def __auth(self,sock,addr,secret_key):
print('来自{}的客户端发起连接,开始验证客户端合法性...'.format(addr))
msg = os.urandom(32)
sock.sendall(msg)
h = hmac.new(secret_key, msg)
digest = h.digest()
response = sock.recv(len(digest))
return hmac.compare_digest(digest, response)
def passwd_auth(self,sock,addr):
import pickle,hashlib
print('来自{}的客户端发起连接,开始验证客户端合法性...'.format(addr))
msg = sock.recv(1024