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之集合(set)
Sep 24 Python
python获取当前计算机cpu数量的方法
Apr 18 Python
python 获取网页编码方式实现代码
Mar 11 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
10个Python小技巧你值得拥有
Sep 29 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
python高级特性简介
Aug 13 Python
python 操作excel表格的方法
Dec 05 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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
YII实现分页的方法
2014/07/09 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
浅谈python写入大量文件的问题
2018/11/09 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Django数据库操作之save与update的使用
2020/04/01 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
解决python对齐错误的方法
2020/07/16 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
村道德模范事迹材料
2014/08/28 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
单位工作证明格式模板
2014/10/04 职场文书
退休欢送会主持词
2015/07/01 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
PHP设计模式(观察者模式)
2021/07/07 PHP
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL