python_socket登陆验证_明文

client.py
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()

server.py
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()
posted @ 2020-06-02 22:51  collin_pxy  阅读(890)  评论(0编辑  收藏  举报