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='')
    

      

     
  • 相关阅读:
    在bindingNavigator1中加入具有更好体验性的DateTimePicker
    static的初始化顺序 (转)
    C#数据结构求最大公约数和最小公倍数[辗转相除法]
    DataGridView控件显示行号
    C# 小票打印机 直接打印 无需驱动[转]
    Core Data 中遇到的一些问题
    字符指针不分配存储区,字符常量存储于静态数据区
    传送门
    Error Set
    实现类似iPhone通讯录新增名片,保存,之后可进行编辑操作的功能
  • 原文地址:https://www.cnblogs.com/123zzy/p/9512815.html
Copyright © 2011-2022 走看看