zoukankan      html  css  js  c++  java
  • 用户的三次登录验证及进度条

    服务器端
    import socketserver
    import json
    import hashlib
    
    def zhuce():
        pass
    
    class MySocket(socketserver.BaseRequestHandler):
        def handle(self):
            sor = b'wusir'#
            while 1:
                str_dic = self.request.recv(1024).decode('utf-8')
                # 接收到 一个字典,类似于{'status':False,'username':None,'password':None}
                if not str_dic:break # 当客户端登录失败退出程序的情况下,这里会接收到一个空消息。
                dic = json.loads(str_dic)
                if not dic['status']:
                    '''没有登录成功的情况下'''
                    with open('info','r',encoding='utf-8') as f:
                        # 文件内容的存储方式  用户名|密码
                        for info in f:
                            username,pawd_txt = info.strip().split('|')
                            if username == dic['username']:
                                '''用户存在,就对客户端发来的用户的密码再次加密,与文件中对比'''
                                md5_obj = hashlib.md5(sor)
                                md5_obj.update(dic['password'].encode('utf-8'))
                                pawd = md5_obj.hexdigest()
                                if pawd_txt == pawd:
                                    dic['status'] = True
                                else:
                                    dic['reason'] = '密码错误'
                                break
                        else:
                            dic['reason'] = '用户不存在'
                            zhuce()
                    str_dic = json.dumps(dic)
                    self.request.send(str_dic.encode('utf-8'))
                else:
                    '''已经是登录成功了'''
    
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MySocket)
    server.serve_forever()
    
    
    
    客户端
    
    
    import socket
    import hashlib
    import json
    sk = socket.socket()
    sk.connect(('127.0.0.1',8080))
    
    dic = {'status':False,'username':None,'password':None}
    c = 3
    while c:
        username = input('请输入用户名')
        password = input('请输入密码')
    
        md5_obj = hashlib.md5(password.encode('utf-8'))
        md5_obj.update(username.encode('utf-8'))
        pawd_m = md5_obj.hexdigest()
    
        dic['username'] = username
        dic['password'] = pawd_m
        str_dic = json.dumps(dic)
        sk.send(str_dic.encode('utf-8'))
    
        # 服务器应该回复我一个这样的字典:
        # 是否登录成功,如果没有登录成功是因为什么原因?
        res_dic = sk.recv(1024).decode('utf-8')# str_dic
        result = json.loads(res_dic)# dic = {status:False/True ,  username ,   password,   reason}
        if result['status']:
            print('登录成功')
            break
        else:
            print('失败,%s'%result['reason'])
            c -= 1
    
    sk.close()
    

      进度条

    import time
    # 1024*15 / 1500000
    for i in range(51):
        time.sleep(0.12)
        print('
    '+ (i//2)*"■" + '>' + str(i*2) + '%',end='')
    

      

  • 相关阅读:
    python系列十二:python3模块
    python系列十一:python3数据结构
    python系列十:python3函数
    python系列九:python3迭代器和生成器
    python系列八:Python3条件控制&循环语句
    python系列七:Python3字典dict
    python系列六:Python3元组tuple
    Linux Ubuntu 安装SSH服务
    Linux Ubuntu 查看IP
    Linux 基础命令
  • 原文地址:https://www.cnblogs.com/duanpengpeng/p/9511639.html
Copyright © 2011-2022 走看看