• python 并发编程


    1,并发编程

      1,什么是并发编程:在tcp协议中多个客户端访问同一个服务端的时候,由于tcp基本的网络连接方式是单线链接的,所以由此引出了并发编程,让多个客户端访问同一个服务端的情况就是并发编程。

      2,socketserver模块的使用就是解决多客户端访问服务端的情况:

        

    #并发编程需要注意的是服务端的接收,客户端按照以往的形式来就好
    import socketserver
    class Myserver(sockerserver.BaseRequestHandler):
        def handler(self):
            while True:
                ret = self.resquest.recv(1024).decode('utf-8')#接收参数
                print(ret)
                self.request.send('hi'.encode('utf-8'))#此处不能使用input方式
               
    if __name__ == '__main__':
        socketserver.TCPServer.allow_reuse_address = True
        server = socketserver.ThreadingTCPServer(('127.0.0.1',9000),Myserver)
        server.serve_forever()
    
    
    #服务端的基本结构并发编程方式
    
    #client端口
    import socket
    sk = socket.socket()
    sk.connect(('127.0.0.1',9000))
    sk.send('nihaoi'.encode('utf-8'))
    t = sk.recv(1024).decode('utf-8')
    print(t)
    sk.close()
    

    2,验证客户端的合法性

    #server端口
    import socket
    import os
    import hashlib
    
    secret_key = '老衲洗头用飘柔'.encode('utf-8')  
    sk= socket.socket()
    sk.bind(('127.0.0.1',9000))
    sk.listen()
    
    conn,mag= sk.accept()            
    random_bytes = os.urandom(32)  #传输一个32位数的随机数字
    conn.send(random_bytes)    #发送过去
    md5 = hashlib.md5(secret_key)    #利用hashilb算法加密加盐
    md5.update(random_bytes)        加密
    ret = md5.hexdigest()
    end_recv = conn.recv(1024).decode('utf-8')
    if end_recv == ret:     #两边判断  
        print('合法客户端')
    else:
        print('不合法客户端')
    conn.close()
    sk.close()                
    
    
    
    #client
    
    import socket
    import hmac
    
    secret_key = '老衲洗头用飘柔'.encode('utf-8')
    sk= socket.socket()
    sk.connect(('127.0.0.1',9000))
    
    # random_bytes = os.urandom(32)
    ret = sk.recv(1024)
    md5 = hmac.new(secret_key,ret)  加密方式不同但是思路相同
    rt = md5.hexdigest()
    sk.send(rt.encode('utf-8'))
    print('----------')
    sk.close()
    

     

  • 相关阅读:
    神经网络 分类: 机器学习 2014-08-12 11:41 87人阅读 评论(0) 收藏
    怎样使用OpenCV进行人脸识别 分类: 计算机视觉(转载) 2014-08-11 16:54 255人阅读 评论(0) 收藏
    machine learning的网站总结 2014-08-10 21:58 91人阅读 评论(0) 收藏
    C程序设计语言习题解答
    Debian下安装vim
    我不能输
    除了爱你还能爱谁
    Linux下配置OpenCV1.0环境
    1:A+B Problem
    3:大整数加法(待复习版)
  • 原文地址:https://www.cnblogs.com/wpcbk/p/9048639.html
Copyright © 2020-2023  润新知