简单的小协程

单线程下实现服务器的并发

import socket
import gevent
from gevent import monkey

monkey.patch_all()

def server():
    s = socket.socket()
    s.bind(('0.0.0.0',8080))
    s.listen()
    while True:
        cli, addr = s.accept()
        print('recv from ', addr)
        gevent.spawn(requests, cli)


def requests(conn):
    try:
        while True:
            data = conn.recv(1024)
            print(data.decode())
            conn.send(data.upper())
    except ConnectionResetError as e:
        print(e)

server()

客户端代码

import socket

client = socket.socket()
client.connect(('localhost', 8080))
while True:
    data = input('>>>')
    if not data:continue
    client.send(data.encode())
    print('>>>', client.recv(1024).decode())
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,716评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,471评论 11 349
  • 1.需要将apk打包成系统应用才能获取到系统权限签名方法:1)添加权限在AndroidManifest.xml文件...
    Tenny1225阅读 7,512评论 3 3
  • 稻香白鹭上青烟,晨光陌上遇悠閑。鏡水只鸭伫溪边。 世事逍遥两难全,竹林深处忧思遠。惯看闲云换人间。
    时影书阅读 2,924评论 0 5
  • 我们所沟通的东西,出自她能理解的角度(换位),为了达到沟通的目的,每一个细节,必须讲得非常具体,提前预想哪些细节容...
    魔山乐水阅读 1,436评论 0 0