zoukankan      html  css  js  c++  java
  • 网络编程(二)

    验证客户端链接的合法性:

      如果你想在分布式系统中实现一个简单的客户端链接认证功能,就可以利用 hmac+加盐的方式实现。

    import os
    import hmac
    import socket
    
    secret_key = '顾清秋'.encode('utf-8')
    
    sk = socket.socket()
    
    sk.bind(('127.0.0.1',9000))
    sk.listen()
    conn,addr = sk.accept()
    while True:
        while True:
            try:
                random_num = os.urandom(32)   # 随机出32位字节
                conn.send(random_num)
                obj = hmac.new(secret_key,random_num)
                ret = obj.hexdigest()
                msg = conn.recv(1024).decode('utf-8')
                if ret == msg:
                    print('链接合法')
                else:
                    print('链接不合法,将断开连接')
                    conn.close()
            finally:
                break
    sk.close()
    服务端
    import hmac
    import socket
    
    secret_key = '顾清秋'.encode('utf-8')
    
    sk = socket.socket()
    sk.connect(('127.0.0.1',9000))
    
    random_num = sk.recv(1024)
    obj = hmac.new(secret_key,random_num)
    ret = obj.hexdigest().encode('utf-8')
    sk.send(ret)
    sk.close()
    客户端

    socketserver:

    import socketserver
    
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            self.data = self.request.recv(1024).strip()  # self.request 相当于conn
            print('{} wrote:'.format(self.client_address[0]))
            print(self.data)
            self.request.sendall(self.data.upper())
    
    if __name__ == '__main__':
        socketserver.TCPServer.allow_reuse_address = True
        server = socketserver.ThreadingTCPServer(('127.0.0.1',9000),MyServer)
        server.serve_forever()
    服务端
    import socket
    sk = socket.socket()
    
    sk.connect(('127.0.0.1',9000))
    
    
    sk.send(b'hello')
    
    sk.close()
    客户端
  • 相关阅读:
    TreeSet和TreeMap中“相等”元素可能并不相等
    求众数——摩尔投票
    5802. 统计好数字的数目
    快速幂
    LCP 07.传递消息
    332. 重新安排行程(欧拉回路问题)
    126. 单词接龙 II
    879. 盈利计划
    287. 寻找重复数
    239. 滑动窗口最大值
  • 原文地址:https://www.cnblogs.com/stfei/p/9009207.html
Copyright © 2011-2022 走看看