zoukankan      html  css  js  c++  java
  • python-gevent模块实现socket大并发

    服务器端:gevent_server.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import sys
    import socket
    import time
    import gevent
     
    from gevent import socket, monkey
     
    monkey.patch_all()
     
     
    def server(port):
        = socket.socket()
        s.bind(('0.0.0.0', port))
        s.listen(500)
        while True:
            cli, addr = s.accept()
            gevent.spawn(handle_request, cli)#启动一个协程
     
     
    def handle_request(conn):
        try:
            while True:
                data = conn.recv(1024)
                print("recv:", data)
                conn.send(data)
                if not data:
                    conn.shutdown(socket.SHUT_WR)
     
        except Exception as  ex:
            print(ex)
        finally:
            conn.close()
     
     
    if __name__ == '__main__':
            server(8001)
     
     客户端:socket_client.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import socket
     
    HOST = 'localhost'  # The remote host
    PORT = 8001  # The same port as used by the server
    = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    while True:
        msg = bytes(input(">>:"), encoding="utf8")
        s.sendall(msg)
        data = s.recv(1024)
     
        #
        print('Received', data)
    s.close()
     
    import sys
    import socket
    import time
    import gevent
     
    from gevent import socket, monkey
     
    monkey.patch_all()
     
     
    def server(port):
        = socket.socket()
        s.bind(('0.0.0.0', port))
        s.listen(500)
        while True:
            cli, addr = s.accept()
            gevent.spawn(handle_request, cli)#启动一个协程
     
     
    def handle_request(conn):
        try:
            while True:
                data = conn.recv(1024)
                print("recv:", data)
                conn.send(data)
                if not data:
                    conn.shutdown(socket.SHUT_WR)
     
        except Exception as  ex:
            print(ex)
        finally:
            conn.close()
     
     
    if __name__ == '__main__':
            server(8001)
  • 相关阅读:
    星际之门(一)
    数组及指针效率
    centos directory server
    today reading notes
    lamp apache配置虚拟主机
    CentOS7 yum lamp 虚拟主机配置 lamp各组件简单影响性能的参数调整--for 一定的环境需求
    CentOS7 lamp安装 centoOS6 lamp
    查看实时公网ip
    CentOS6无法本地登陆,ssh远程登陆没问题
    tomcat root dir log 配置
  • 原文地址:https://www.cnblogs.com/394510636-ff/p/9282152.html
Copyright © 2011-2022 走看看