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正则表达式介绍
Aug 06 Python
简单讲解Python编程中namedtuple类的用法
Jun 21 Python
python中requests小技巧
May 10 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
浅谈Python反射 & 单例模式
Mar 21 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
详解OpenCV曝光融合
Apr 29 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/04 日漫
php多任务程序实例解析
2014/07/19 PHP
php实现无限级分类
2014/12/24 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
php析构函数的简单使用说明
2015/08/24 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
vuejs绑定class和style样式
2017/04/11 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
elementUI select组件使用及注意事项详解
2019/05/29 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
python实现给字典添加条目的方法
2014/09/25 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
2015/05/06 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python如何实现复制目录到指定目录
2020/02/13 Python
如何通过python检查文件是否被占用
2020/12/18 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
试用期转正后的自我评价
2014/09/21 职场文书
离婚财产处理协议书
2014/09/30 职场文书
会计工作态度自我评价
2015/03/06 职场文书