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()
    客户端
  • 相关阅读:
    Java5 多线程实践
    ExtJS2.0实用简明教程 Border区域布局
    MySQL安装图解
    ExtJS2.0实用简明教程 组件的使用
    ExtJS2.0实用简明教程 ExtJS版的Hello
    Linux操作系统中如何安装Tomcat
    线程池的介绍及简单实现
    ExtJS2.0实用简明教程 获得ExtJS
    汽车常识全面介绍 动力系统
    MySQL 图形化管理工具介绍
  • 原文地址:https://www.cnblogs.com/stfei/p/9009207.html
Copyright © 2011-2022 走看看