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的Django框架测试驱动开发的教程
Apr 22 Python
python安装以及IDE的配置教程
Apr 29 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
代码分析Python地图坐标转换
Feb 08 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
Python开发简易五子棋小游戏
May 02 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
由php if 想到的些问题
2008/03/22 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
javascript实现日期格式转换
2014/12/16 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
2015/12/16 Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
2016/03/25 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
基于jQuery的表单填充实例
2017/08/22 jQuery
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python黑魔法之编码转换
2016/01/25 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
英国领先的体验日提供商:Buyagift
2019/04/19 全球购物
护理学专业推荐信
2013/12/03 职场文书
生产车间班组长岗位职责
2014/01/06 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年度党员个人总结
2015/02/14 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python