• day30日期06-09 【TCP登录】


    1.两个文件客户端和服务端2.依照文件中的账号和加密过的密码,比对客户端和服务端的
    用户信息一致性3.如果一致显示登录成功,否则断开连接

    新建一个文件当成数据库,然后对密码进行加密
    客户端输入通过把字典形式的数据分割用户名和密码和数据库中的用户名想比较,先通过json转换成字符串再转换成字节流,然后通过状态码相比较

    服务端

    import hashlib
    import socket
    import json

    def get_md5(user,pwd):
    hs=hashlib.md5("xiama".encode())
    hs.update(pwd.encode())
    return hs.hexdigest()
    # print(get_md5("duoduo","12345"))#c26313119e10ecd8b024228e988aa87a

    sk=socket.socket()
    sk.bind(("127.0.0.1",9004))
    sk.listen()
    conn,addr=sk.accept()
    #接收数据
    msg=conn.recv(1024).decode()
    dicc=json.loads(msg)
    print(dicc)#{'username': 'xiaoma', 'password': '123456', 'operat': 'login'}

    sign1=True
    with open("userinfo.txt",mode="r",encoding="utf-8") as fp:
    for i in fp:
    user1,pwd1=i.strip().split(":")
    print(user1,pwd1)

    if user1==dicc["username"] and pwd1==get_md5(user,dic["password"]):
    res={"code":1}
    res_msg=json.dumps(res).encode()
    conn.send(res_msg)
    sign1=False
    break
    if sign1==True:
    res={"code":0}
    res_msg=json.dumps(res).encode()
    conn.send(res_msg)

    conn.close()
    sk.close()

    # xiama:123456
    # duoduo:12345

    客户端
    import socket
    import json
    sk=socket.socket()

    sk.connect(("127.0.0.1",9004))
    #收发数据的逻辑
    user=input("请输入您的用户名:")
    pwd=input("请输入您的密码:")
    #发送一个字典,json是语言交流,传输。pickle是存储
    #json(元组,字符串,int dict,none所有语言都能识别)转换为字符串,再转化为字节流
    #用户名和密码发过去的来意,operate
    dic={"username":user,"password":pwd,"operat":"login"}
    res=json.dumps(dic)
    byte_msg=res.encode()
    sk.send(byte_msg)
    #接收服务端发送过来的数据
    res_msg1=sk.recv(1024).decode()
    dic_code=json.loads(res_msg1)
    if dic_code["code"]:
    print("恭喜您登录成功")
    else:
    print("抱歉登录失败了")


    #两个send有可能粘包
    # sk.send(b)

    sk.close()



  • 相关阅读:
    Linux系统运维之MYSQL数据库集群部署(主从复制)
    Linux系统运维之负载均衡Tengine
    Linux系统运维之subversionEdge部署
    Linux系统运维之Hadoop、Hive、Flume数据处理
    CoIDE在STM32系列单片机中的使用实践
    软硬件调试九法:第三条规则 不要想而要看
    《产品经理》读书笔记
    <读书笔记> 代码整洁之道
    关于鼠标手的症状和恢复方法
    <读书笔记>软件调试之道 :从大局看调试-理想的调试环境
  • 原文地址:https://www.cnblogs.com/bonnyxinxin/p/13140127.html
Copyright © 2020-2023  润新知