python asyncio tcp server_Python 3.4 中新的 asyncio : Servers、Protocols 和 Transports
使用 Clients and Servers
在上面的例子中,telnet是一个客户端。asyncio模块提供了一个协程方便你很容易的使用stream reader 和 writer来编写服务端和客户端。下面的代码演示了一个简单的echo server,该server监听localhost上的2222端口。你可以在Python的控制台中运行下面的代码,之后在另一个Python的控制台中运行客户端的代码作为客户端。
import asyncio
@asyncio.coroutine
def simple_echo_server():
# Start a socket server, call back for each client connected.
# The client_connected_handler coroutine will be automatically converted to a Task
yield from asyncio.start_server(client_connected_handler, 'localhost', 2222)
@asyncio.coroutine
def client_connected_handler(client_reader, client_writer):
# Runs for each client connected
# client_reader is a StreamReader object
# client_writer is a StreamWriter object
print("Connection received!")
while True:
data = yield from client_reader.read(8192)
if not data:
break
print(data)
client_writer.write(data)
loop = asyncio.get_event_loop()
loop.run_until_complete(simple_echo_server())
try:
loop.run_forever()
finally:
loop.close()
下面的代码演示了一个客户端程序连接了localhost上的2222端口,并且使用asyncio.StreamWriter对象写了几行数据,之后使用asyncio.StreamWriter对象读取服务端返回的数据。
import asyncio
LASTLINE = b'Last line.\n'
@asyncio.coroutine
def simple_echo_client():
# Open a connection and write a few lines by using the StreamWriter object
reader, writer = yield from asyncio.open_connection('localhost', 2222)
# reader is a StreamReader object
# writer is a StreamWriter object
writer.write(b'First line.\n')
writer.write(b'Second line.\n')
writer.write(b'Third line.\n')
writer.write(LASTLINE)
# Now, read a few lines by using the StreamReader object
print("Lines received")
while True:
line = yield from reader.readline()
print(line)
if line == LASTLINE or not line:
break
writer.close()
loop = asyncio.get_event_loop()
loop.run_until_complete(simple_echo_client())
python asyncio tcp server_Python 3.4 中新的 asyncio : Servers、Protocols 和 Transports相关推荐
- python asyncio tcp server_Python 的异步 IO:Asyncio 之 TCP Client
关于 Asyncio 的其他文章: 如果不知道 Asyncio 是什么,先看「Asyncio 简介」那一篇. 一个简单的 HTTP Server 首先,为了便于测试,我们用 Python 内建的 ht ...
- python asyncio tcp server_asyncio异步IO——Streams详解
前言 本文翻译自python3.7官方文档--asyncio-stream,译者马鸣谦,邮箱 1612557569@qq.com.转载请注明出处. 数据流(Streams) 数据流(Streams)是 ...
- python比较重要的模块_python中重要的模块--asyncio 转载
转载自: https://www.cnblogs.com/zhaof/p/8490045.html 一直对asyncio这个库比较感兴趣,毕竟这是官网也非常推荐的一个实现高并发的一个模块,python ...
- python asyncio教程_在Python3中使用asyncio库进行快速数据抓取的教程
web数据抓取是一个经常在python的讨论中出现的主题.有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法.有一些如scrapy这样十分成熟的框架,更多的则是像mechanize ...
- python tcp服务器 多线程_Python中的多线程TCP服务器
我使用python的threding模块创建了一个简单的多线程tcp服务器.每次连接新客户端时,该服务器都会创建一个新线程. #!/usr/bin/env python import socket, ...
- Python 中如何解决 asyncio 文件描述符最大数量限制问题
文章目录 问题复现 问题分析 事件循环 EventLoop I/O 多路复用 select 的缺点 解决方法 1.更换事件循环选择器 2.限制并发量 3.修改最大文件描述符限制 Windows Lin ...
- python能调用身份证读卡器吗_用Python在Linux下调用新中新DKQ-A16D读卡器,读二代证数据...
1.背景 最近在研究二代证读卡器,手头上的设备是新中新DKQ-A16D,在官网(https://www.onecardok.com.cn/download)逛了一圈,发现Win下的示例,浏览器插件很多 ...
- (6)Python爬虫——爬取中新网新闻
工欲善其事,必先利其器.我们要进行数据挖掘,就必须先获取数据,获取数据的方法有很多种,其中一种就是爬虫.下面我们利用Python2.7,写一个爬虫,专门爬取中新网http://www.chinanew ...
- Python 3.8 稳定版正式发布,新特性全面解读
早在之前关于 Python 新版本的文档在官方一就直处于更新模式中,就在昨日 Python 3.8 稳定版正式发布了,让我们来看看新版本有哪些新特性呢? Python 3.8.0 稳定版的新特性 1P ...
最新文章
- 「完结」12篇文章带你逛遍主流分割网络
- day06_方法_20150806
- 判断丑数python_LintCode Python 简单级题目 517.丑数
- fastapi jinja2_(入门篇)Python框架之FastAPI——一个比Flask和Tornado更高性能的API 框架
- Educational Codeforces Round 73 (Rated for Div. 2) F. Choose a Square 线段树 + 二维转一维
- access设置0字段为null是因为类型转换失败_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
- 实测java 与php运行速度比较
- Titanic(泰坦尼克号生存预测)---(1)
- js 正则判断用户是否输入表情
- python两行数据相加_小白python入门基础——Python安装教程与特色介绍
- html5中切换图片怎么做,HTML5编程实战之二:用动画的形式切换图片
- 如何在ant脚本中获得svn版本号
- 简单工厂模式--计算器代码及UML图
- 大道至简:智能语义检测的武林
- mysql 视图 多个 select_MySQL中Update、select联用操作单表、多表,及视图与临时表的区别...
- c++做的免费游戏狼人杀
- open erp java_OpenERP API 接口
- 数字后端——信号完整性分析
- 解决 Windows USB 鼠标键盘断连掉线的问题 和 安全删除硬件并弹出媒体图标 没有弹出移动硬盘的选项
- 小程序云函数new Date()获取的时间和new Date().getDay()获取的时间不一致 / 云函数存入的时间不对 /小程序云开发配置时区
热门文章
- 岛国科普第2弹-再造人类生命的神奇细胞Human.Life.Our.Amazing.Cell
- R语言ggplot2可视化并添加特定区间的回归线、R原生plot函数可视化并添加特定区间的回归线:Add Regression Line Between Certain Limits
- R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系
- R语言ggplot2可视化在可视化图像中添加上限线条、下限线条、添加上下限图例实战
- python使用textwrap包在已经生成的长字符串中嵌入回车符实战
- R语言nrow函数获取dataframe或者matrix行计数统计
- R语言jitter函数为数据添加噪声(noise)扰动信息实战
- R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection)
- Python进行时间序列平稳检验ADFtest(Augmented Dickey-Fuller Unit Root Test)
- 影像组学视频学习笔记[44(End)]-带95%置信区间的折线图、Li‘s have a solution and plan.