import socket
import struct
sk=socket.socket()
sk.connect((‘127.0.0.1‘,9005))
while True:
username=input("请输入用户名: ")
password=input("请输入密码: ")
blen=struct.pack("i",len(username.encode(‘utf-8‘)))
sk.send(blen)
sk.send(username.encode(‘utf-8‘))
sk.send(password.encode(‘utf-8‘))
if ‘Q‘ in [username.upper(),password.upper()]: # 先 send 再判断,客户端主动发起断开
break
else:
answer=sk.recv(1024).decode("utf-8")
if bool(answer==‘True‘): # 从字符串的‘True‘转为 布尔类型的True
print("验证通过")
else:
print("用户名或密码错误")
sk.close()
import struct
import socket
sk=socket.socket()
sk.bind(("127.0.0.1",9005))
sk.listen()
while True:
conn,_ = sk.accept()
while True:
blen=struct.unpack(‘i‘,conn.recv(4))[0]
username=conn.recv(blen).decode(‘utf-8‘)
password=conn.recv(1024).decode(‘utf-8‘)
print(username,password)
if ‘Q‘ in [username.upper(),password.upper()]:
break
else:
with open("userinfo", ‘r‘) as f:
for line in f.readlines():
if username==line.strip().split("|")[0] and password==line.strip().split("|")[1]:
conn.send(‘True‘.encode(‘utf-8‘))
break
else:
conn.send(‘False‘.encode(‘utf-8‘))
conn.close()
print("断开与当前客户端的连接,等待其他客户端的连接")
sk.close()
原文:https://www.cnblogs.com/Collin-pxy/p/13034393.html