zoukankan      html  css  js  c++  java
  • Twsited异步网络框架

    Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议、线程、数据库管理、网络操作、电子邮件等。

    Twisted介绍:http://blog.csdn.net/hanhuili/article/details/9389433

    事件驱动

    简而言之,事件驱动分为二个部分:第一,注册事件;第二,触发事件。

    自定义事件驱动框架,命名为:“弑君者”:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
     
    # event_drive.py
     
    event_list = []
     
     
    def run():
        for event in event_list:
            obj = event()
            obj.execute()
     
     
    class BaseHandler(object):
        """
        用户必须继承该类,从而规范所有类的方法(类似于接口的功能)
        """
        def execute(self):  #必须重写此方法,不写就报错
            raise Exception('you must overwrite execute')
     
    最牛逼的事件驱动框架

    程序员使用“弑君者框架”:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
     
    from source import event_drive
     
     
    class MyHandler(event_drive.BaseHandler):
     
        def execute(self):
            print 'event-drive execute MyHandler'
     
     
    event_drive.event_list.append(MyHandler)
    event_drive.run()

    Protocols
    Protocols描述了如何以异步的方式处理网络中的事件。HTTP、DNS以及IMAP是应用层协议中的例子。Protocols实现了IProtocol接口,它包含如下的方法:

    makeConnection 在transport对象和服务器之间建立一条连接
    connectionMade 连接建立起来后调用
    dataReceived 接收数据时调用
    connectionLost 关闭连接时调用


    Transports
    Transports代表网络中两个通信结点之间的连接。Transports负责描述连接的细节,比如连接是面向流式的还是面向数据报的,流控以及可靠性。TCP、UDP和Unix套接字可作为transports的例子。它们被设计为“满足最小功能单元,同时具有最大程度的可复用性”,而且从协议实现中分离出来,这让许多协议可以采用相同类型的传输。Transports实现了ITransports接口,它包含如下的方法:

    write 以非阻塞的方式按顺序依次将数据写到物理连接上
    writeSequence 将一个字符串列表写到物理连接上
    loseConnection 将所有挂起的数据写入,然后关闭连接
    getPeer 取得连接中对端的地址信息
    getHost 取得连接中本端的地址信息
    将transports从协议中分离出来也使得对这两个层次的测试变得更加简单。可以通过简单地写入一个字符串来模拟传输,用这种方式来检查。

  • 相关阅读:
    Android与js交互实例
    动态规划-最长公共子序列
    android调用js
    比特币不是虚拟货币,这是一个真实世界----李笑来
    Linux进程同步之POSIX信号量
    编程至死第0天
    JMX操作ActiveMQ(2)
    Oracle层次查询和with函数的使用
    boost::asio async_write也不能保证一次发完所有数据 一
    解决Eclipse一直loading workbench无法启动的问题
  • 原文地址:https://www.cnblogs.com/linkenpark/p/5351943.html
Copyright © 2011-2022 走看看