• python 并发socket


    import socket
    import selectors
    import threading
    import time
    selector = selectors.DefaultSelector()
    
    socket_server = socket.socket()
    address_server = ('0.0.0.0',8080)
    socket_server.bind(address_server)
    socket_server.listen(1000)
    
    
    def wokter(socket_ser):  #多线程套接字
        while True:
            massage = socket_ser.recv(1024)
            if massage:
                socket_ser.send(massage)
            else:
                socket_ser.close()
    
    while True:
        socket_ser, address = socket_server.accept()
        socket_thre =threading.Thread(target=wokter, args=(socket_ser,))
        socket_thre.start()
    
    
    def server_read(connect): #epoll的socket
        massage = connect.recv(1024)
        if massage:
            connect.send(massage)
        else:
            selector.unregister(connect)#清除注册
            connect.close()
    
    def accept(socket_server):
        socket_ser, address = socket_server.accept()
        socket_ser.setblocking(False)
        selector.register(socket_ser, selectors.EVENT_READ, server_read)#注册事件回调socket连接
    selector.register(socket_server, selectors.EVENT_READ, accept)#注册事件回调socket对象
    
    while True:
        events = selector.select()#查询所有准备好的事件,一个二元组列表
        for key,massk in events:
            callback = key.data  #拿到回调函数
            sock = key.fileobj   #拿到注册的那个socket
            callback(sock)       #回调执行
  • 相关阅读:
    55. Jump Game
    367. Valid Perfect Square
    22. Generate Parentheses
    254. Factor Combinations
    77. Combinations
    17. Letter Combinations of a Phone Number
    javascript获取随机数的几种方式
    javascript获取随机rgb颜色和十六进制颜色的方法
    javascript遍历数组最优写法
    javascript中字符串的常用方法
  • 原文地址:https://www.cnblogs.com/arrow-kejin/p/8989930.html
Copyright © 2020-2023  润新知