无需任何I/O即可编写网络协议分析器的实用程序

ohneio的Python项目详细描述


用于编写网络协议分析器sans I/O的实用程序库

OhneI/O(德语中没有I/O)是一个使用 asyncio协同编程风格。

ohneio允许您以编写异步协议的方式编写协议解析器:

>>>importbase64>>>importohneio>>>>>>defwait_for(s):...whileTrue:...data=yield fromohneio.peek()...pos=data.find(s)...ifpos>=0:...returnpos...yield fromohneio.wait()...>>>defread_until(s):...pos=yield fromwait_for(s)...data=yield fromohneio.read(pos)...returndata...>>>@ohneio.protocol...defecho_base64(separator):...whileTrue:...segment=yield fromread_until(separator)...yield fromohneio.read(len(separator))...yield fromohneio.write(base64.b64encode(segment)+separator)...>>>connection=echo_base64(b'\r\n')>>>connection.send(b'hello')>>>connection.read()b''>>>connection.send(b'\r\nworld\r\n')>>>connection.read()b'aGVsbG8=\r\nd29ybGQ=\r\n'

上面的示例还显示了ohneio如何允许组合原语 进入更大的解析函数(比如wait_forread_until)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java向嵌入式Jetty添加多个端点   java如何在JAXWS处理程序中区分请求和响应?   使用Scenebuilder for JAVAFx的登录应用程序的java MVC体系结构   java对话框将不显示   Windows 7上的Java系统变量   java删除动态添加的面板   java将Javadoc嵌入到HTML网站中   带有URL编码数据的java Spring RestTemplate POST请求   java JAXR只运行一次函数   HttpClient缺少java依赖项   java深层反射比较   基于javarmi和CORBA的分布式计算   如何使用当前数据库时间从Java更新MongoDB?   java通过光标保存数据调试时显示错误数据