协程在Socket上的应用

Posted allenzhang-920

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协程在Socket上的应用相关的知识,希望对你有一定的参考价值。

Socket内部实现用的是多线程。

 

服务端

# coding=utf-8

import sys
import socket
import time
import gevent
from gevent import socket, monkey

monkey.patch_all()

def server(port):
    s = 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 e:
        print e
    finally:
        conn.close()


if __name__ == __main__:
    server(8001)

 

客户端

# coding=utf-8

HOST = localhost
PORT = 8001
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
    msg = raw_input(>>:)
    s.sendall(msg)
    data = s.recv(1024)
    print Received, data
s.close()

 

以上是关于协程在Socket上的应用的主要内容,如果未能解决你的问题,请参考以下文章

异步io和协程

协程在Web服务器中的应用(配的图还不错)

Kotlin 协程在 Compose 函数中调用了两次而不是一次

asio c++20 协程在windows下和linux下设定

如何使用协程在android中每1秒检查一次GPS可用性

项目实战_Python.子进程/协程在固件检测更新升级程序中的正确姿势?