zoukankan      html  css  js  c++  java
  • 利用协程和socket实现并发

    服务端代码

    from gevent import monkey
    monkey.patch_all()
    from gevent import spawn
    import socket
    
    
    def communicate(conn):
        while True:
            try:
                data = conn.recv(1024)
                if len(data) == 0:break
                print(data.decode("utf-8"))
                conn.send(data.upper())
            except ConnectionResetError:
                break
        conn.close()
    
    def server():
        server = socket.socket()
        server.bind(("127.0.0.1",8080))
        server.listen(5)
        while True:
            conn,addr = server.accept()
            spawn(communicate())
    if __name__ == '__main__':
        s1 = spawn(server)
        s1.join()
    

    客户端代码

    import socket
    from threading import  Thread,current_thread
    
    
    def client():
        client = socket.socket()
        client.bind(("127.0.0.1",8080))
        n = 1
        while True:
            data = "%s %s "%(current_thread().name,n)
            n +=1
            client.send(data.encode("utf-8"))
            info = client.recv(1024)
            print(info)
    if __name__ == '__main__':
        for i in range(500):
            t = Thread(target=client)
            t.start()
    
  • 相关阅读:
    img 的data-src 属性及懒加载
    try catch 用法
    input 的各种属性的验证 checkValidity兼容性
    表单提交的方法。
    通信原理
    计算机组成原理
    CREC 2017
    POJ 1201 Intervals
    HDU 3440 House Man
    poj 3169 Layout
  • 原文地址:https://www.cnblogs.com/ruhai/p/10840676.html
Copyright © 2011-2022 走看看