python中协程实现TCP连接的实例分析


Posted in Python onOctober 14, 2018

在网络通信中,每个连接都必须创建新线程(或进程) 来处理,否则,单线程在处理连接的过程中, 无法接受其他客户端的连接。所以我们尝试使用协程来实现服务器对多个客户端的响应。

与单一TCP通信的构架一样,只是使用协程来实现多个任务同时进行。

#服务端

import socket

from gevent import monkey

import gevent

monkey.patch_all()

def handle_conn(seObj):

  while True:

    re_Data = seObj.recv(1024).decode('utf-8')

    if re_Data == 'quit':

      break

    print('client>>',re_Data)

    value = input("server>>")

    se_Data = seObj.send(value.encode('utf-8'))

    if se_Data == 'quit':

      break

if __name__ == '__main__':

  server = socket.socket()

  server.bind(('192.168.1.227',9876))

  print("服务已开启")

  server.listen(4)

  while True:

    seObj,add = server.accept()

    gevent.spawn(handle_conn,seObj)

  seObj.close()

  server.close()
import socket

 

# 1. 创建客户端的socket对象

client = socket.socket()

# 2. 连接服务端, 需要指定端口和IP

client.connect(('192.168.1.227',9876))

while True:

  # 3. 给服务端发送数据

  send_data = input("client:>")

  client.send(send_data.encode('utf-8'))

  if send_data == 'quit':

    break

  # 4. 获取服务端返回的消息

  recv_data = client.recv(1024).decode('utf-8')

  if recv_data == 'quit':

    break

  print("server:>%s" %(recv_data))

# 5. 关闭socket连接

client.close()

以上就是python中协程实现TCP连接的代码示例的详细内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python del()函数用法
Mar 24 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
Mar 23 Python
python爬虫自动创建文件夹的功能
Aug 01 Python
在Python中实现shuffle给列表洗牌
Nov 08 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
浅谈django channels 路由误导
May 28 Python
python PIL模块的基本使用
Sep 29 Python
10个python爬虫入门实例(小结)
Nov 01 Python
解决python "No module named pip" 的问题
Oct 13 #Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 #Python
python机器学习之神经网络实现
Oct 13 #Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 #Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 #Python
解决PyCharm import torch包失败的问题
Oct 13 #Python
python3+requests接口自动化session操作方法
Oct 13 #Python
You might like
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python的Jenkins接口调用方式
2020/05/12 Python
Django 解决由save方法引发的错误
2020/05/21 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
估算杭州有多少软件工程师
2015/08/11 面试题
2014年纪检监察工作总结
2014/11/11 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS