zoukankan      html  css  js  c++  java
  • 网络编程- socket_server_登录demo

    userinfo文件

    alex|aee949757a2e698417463d47acac93df

    server_login

    import json
    import hashlib
    import socketserver
    def md5_pwd(user,pwd):
    md5_obj = hashlib.md5(user.encode('utf-8'))
    md5_obj.update(pwd.encode('utf-8'))
    ret = md5_obj.hexdigest()
    return ret

    def login(userinfo):
    user_dic = json.loads(userinfo)
    passwd = md5_pwd(user_dic['username'], user_dic['passwd'])
    with open('userinfo') as f:
    for line in f:
    user, pwd = line.split('|')
    if user_dic['username'] == user and passwd == pwd:
    print('登录成功')
    break

    class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
    userinfo = self.request.recv(1024).decode('utf-8')
    login(userinfo)

    server = socketserver.ThreadingTCPServer(
    ('127.0.0.1',9000),
    MyServer)
    server.serve_forever()

    client_login

    import json
    import socket
    ADDR = ('127.0.0.1',9000)
    def get_socket():
    sk = socket.socket()
    sk.connect(ADDR)
    return sk
    # 输入账号
    username = input('username >>>')
    passwd = input('password >>>')
    if username.strip() and passwd.strip():
    sk = get_socket()
    dic = {'username':username,'passwd':passwd}
    str_dic = json.dumps(dic)
    sk.send(str_dic.encode('utf-8'))
    sk.close()
    # 连接socket


    复习总结
    # 网络编程
    # 互联网协议 —— 七层 :osi协议
    # 五层
    # 应用层 python
    # 传输层 tcp/udp
    # 网络层 ip 路由器
    # 数据链路层 arp 交换机
    # 物理层 网卡 双绞线
    # arp 通过ip找mac地址
    # 交换机 :广播 单播 组播
    # ip协议 :ip地址的格式
    # ip地址 一台机器在一个网络内唯一的标识
    # 子网掩码 ip地址与子网掩码做按位与运算,得到的结果是网段
    # 网关ip 局域网内的机器访问公网ip,就通过网关访问
    # tcp 面向流的 可靠 全双工 三次握手 四次挥手 —— 黏包
    # udp 面向数据包 不可靠

    # 黏包
    # 什么是黏包
    # 怎么解决
    # 在发送信息信息之前 先告诉对方要发的数据有多大
    # struct模块将要发送数据的大小固定化,无论如何就发4个字节
    # 自定义协议的概念

    # 验证客户端合法性 hmac

    # 处理并发问题
    # socketserver
    
    
  • 相关阅读:
    1、听说过Redis吗?它是什么?
    55、数据库高并发是我们经常会遇到的,你有什么好的解决方案吗?
    54、数据库如何保证持久性?
    53、数据库如何保证原子性?
    52、数据库如何保证一致性?
    注解定义、基本语法和属性
    Macbook 装机必备--开发篇
    http
    python:beaufiful
    python-yield
  • 原文地址:https://www.cnblogs.com/mys6/p/10801516.html
Copyright © 2011-2022 走看看