day41

复习
+
# 基于协程的高并发服务端
# 服务端
from gevent import monkey, spawn

monkey.patch_all()

from socket import socket


def make_server(ip, port):
    server = socket()
    server.bind((ip, port))
    server.listen(5)

    while True:
        conn, addr = server.accept()
        spawn(task, conn)  # 这里还需要join吗?不能加,我们不希望它夯在这


def task(conn):
    while True:
        # bytes.upper()
        # str.upper()
        try:
            data = conn.recv(1024)
            if len(data) == 0: break
            print(data)
            conn.send(data.upper())
        except Exception as e:
            print(e)
            break
    conn.close()


if __name__ == '__main__':
    # make_server('127.0.0.1',8080)
    g = spawn(make_server, '127.0.0.1', 8080)
    g.join()


# 客户端
from socket import socket
from threading import Thread, current_thread


def task():
    cli = socket()
    cli.connect(('127.0.0.1', 8080))
    while True:
        ss = '%s say hello' % current_thread().name
        cli.send(ss.encode('utf-8'))
        data = cli.recv(1024)
        print(data)


for i in range(5000):
    t = Thread(target=task)
    t.start()

 

posted @ 2020-08-31 20:48  板鸭没有腿  阅读(121)  评论(0)    收藏  举报