zoukankan      html  css  js  c++  java
  • python--gevent高并发socket

    server:

    import sys
    import socket
    import time
    import gevent
    from gevent import socket,monkey
    
    monkey.patch_all()
    
    
    def server(port):
        try:
            s = socket.socket()
            s.bind(('0.0.0.0',port))
            s.listen(500)
            while True:
                cli, addr = s.accept()
                gevent.spawn(handle_request, cli)
        except KeyboardInterrupt as e:
            print(e)
    
    
    def handle_request(conn):
        try:
            while True:
                print("before start recv")
                data = conn.recv(1024)
                print("after start recv")
                if not data:
                    #print("client has been closed...")
                    #conn.shutdown(socket.SHUT_RD)
                    conn.close()
                else:
                    print("recv:", data)
                    conn.send(data)
        except OSError as e:
            print("client has been closed")
    
        except Exception as ex:
            print(ex)
        finally:
            conn.close()
    
    if __name__ == '__main__':
        server(8001)
    

    client:

    import socket
    
    HOST = 'localhost'
    PORT = 8001
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    while True:
        msg = bytes(input(">>:"), encoding="utf-8")
        if msg == 'q'.encode("utf-8"):
            exit("退出!")
        s.sendall(msg)
        data = s.recv(1024)
        print('Received',repr(data))
    s.close()
    
  • 相关阅读:
    本周总结
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    Hibernate中session.createCriteria的用法
    Spring AOP 源码分析
    TCP的三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/guqing/p/6486275.html
Copyright © 2011-2022 走看看