`
deepfuture
  • 浏览: 4423999 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80254
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:70671
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103850
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:287078
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15095
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:68115
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32429
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:46191
社区版块
存档分类
最新评论

twisted-收发数据

 
阅读更多
from twisted.internet import stdio, reactor, protocol

from twisted.protocols import basic

import re



class DataForwardingProtocol(protocol.Protocol):

    def __init__(self):

        self.output = None

        self.normalizeNewlines = False



    def dataReceived(self, data):

        if self.normalizeNewlines:

            data = re.sub(r"(\r\n|\n)", "\r\n", data)

        if self.output:

            self.output.write(data)



class StdioProxyProtocol(DataForwardingProtocol):

    def connectionMade(self):

        inputForwarder = DataForwardingProtocol( )

        inputForwarder.output = self.transport

        inputForwarder.normalizeNewlines = True

        stdioWrapper = stdio.StandardIO(inputForwarder)

        self.output = stdioWrapper

        print "Connected to server.  Press ctrl-C to close connection."



class StdioProxyFactory(protocol.ClientFactory):

    protocol = StdioProxyProtocol



    def clientConnectionLost(self, transport, reason):

        reactor.stop( )



    def clientConnectionFailed(self, transport, reason):

        print reason.getErrorMessage( )

        reactor.stop( )



if __name__ == '__main__':

    import sys

    if not len(sys.argv) == 3:

        print "Usage: %s host port" % __file__

        sys.exit(1)



    reactor.connectTCP(sys.argv[1], int(sys.argv[2]), StdioProxyFactory( ))

    reactor.run( )



 

 

 
E:\test>python test.py www.hao123.com 80
Connected to server.  Press ctrl-C to close connection.

 

 

从定义DataForwardingProtocol类开始,每当接收数据调用self.output.write数据传递self.output可以是任何对象写入方法 DataForwardingProtocolnormalizeNewLines属,如果设置为true,它会Unix风格的\ N换行符标准化为\ R\ N的更标准的网络协议使用换行符

做为 DataForwardingProtocol的子类, StdioProxyProtocol完成设置工作,一旦连接建立,它就建立一个DataForwardingProtocol的实例,叫inputForwarder,设置它的输出为self.transport,然后包装inputForwarder为twisted.internet.stdio的实例,inputForwarder挂钩到标准的I / O做为网络连接的替换,从标准输入接收到的数据转发到 StdioProxyProtocol网络连接中,最后,设置StdioProxyProtocol输出属性为stdioWrapper因此从连接接收到的数据将被转发到标准输出

分享到:
评论

相关推荐

    twisted 从入门到精通

    - **第5章**:介绍 Twisted 如何支持 RESTful API 的设计与实现,同时还会涉及 XMLRPC 和 SOAP 等远程过程调用技术,帮助读者掌握在不同应用间进行数据交换的方法。 ##### 2.5 认证管理 - **第6章**:探讨如何在 ...

    python twisted系列

    1. **定义协议**:根据需求编写自定义协议类,继承自Twisted提供的基础协议类,实现数据收发的逻辑。 2. **创建工厂**:工厂类创建协议实例,通常会设置一个生成协议实例的方法。 3. **启动反应器**:在主程序中,...

    汉源高科迷你型万兆光纤收发器 850nm万兆多模光纤收发器 机架式万兆光纤收发器.docx

    * 线缆类型及距离:双绞线 Twisted-pair、单模光纤 Monomode optical fiber * 电气特性:输入电压 DC5-12V,整机功耗 ≤4.1W * 二层交换:转发延迟 ,支持看门狗功能 * 环境条件:工作温度 -20℃~+70℃,储藏/运输...

    python twisted 网络编程教程 有代码示例

    协议是 Twisted 中用于处理数据收发的核心组件。每个协议实例都对应于一个特定的网络连接。协议通常包含 `connectionMade` 和 `dataReceived` 方法,分别处理连接建立和数据接收的事件。 ###### 2.1.3 工厂 工厂类...

    matrix_twisted

    - **Protocol**(协议):客户端也需要定义相应的协议类来处理数据收发。 - **ClientFactory**(客户端工厂):与服务器端类似,客户端也可以通过工厂模式来创建协议实例。 3. **A Higher-Level Example: ...

    NCN5121-D Transceiver Twisted Pair Networks-综合文档

    NCN5121-D是一款专为KNX Twisted Pair Networks设计的收发器,它符合KNX协会的标准,能够确保数据在楼宇自动化系统中的高效、稳定传输。该器件集成了发送器和接收器功能,支持EIB/KNX TP1协议,可实现双向通信,适用...

    twsited官方开发入门手册

    - 协议是 Twisted 中用于定义数据收发规则的类,通过继承自 `twisted.internet.protocol.Protocol` 类来实现。 - **2.1.3 工厂** - 工厂用于创建协议实例,并管理客户端和服务器之间的连接。在 Twisted 中,可以...

    对最基础的twisted架构进行了介绍,其中重点讲解了reactor和deferred

    协议工厂用于生成处理特定类型连接的协议实例,而协议则定义了如何处理数据收发的逻辑。终结点则为不同类型的网络连接(如本地套接字、TCP/IP连接或UNIX域套接字)提供了一致的接口。 总的来说,理解Twisted的...

    和利时DCS硬件手册_PROFIBUS-DP总线应用手册

    RS-485是一种串口总线标准,由EIA制定,采用平衡式发送、差分式接收的数据收发器来驱动总线。RS-485标准支持多节点、远距离和高灵敏度的数据传输。该标准的具体规范包括:最大传输距离为1200米,传输速率高达10Mbps...

    S3C44B0X中文数据手册第一章_S3C44B0X综述.pdf

    - **2通道UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)**:支持IrDA 1.0标准,每个通道具有16-byte FIFO(First In First Out,先进先出)缓冲区。 - **4通道DMA(Direct Memory Access,...

    ISO-11898-2

    ISO-11898-2定义了两种类型,即2线非屏蔽双绞线(2-wire unshielded twisted pair, 2W-UTP)和高电磁兼容性的单线(Single-wire, EMC+)。这些物理层设计确保了数据传输的可靠性和抗干扰性。 2. 电气特性:标准详细...

    PHY芯片手册B50612D

    手册提供了2.5V RGMII I/O的详细信息,以及有关RGMII收发器的描述,包括发送和接收延迟,数据和控制信号编码,以及RGMII布局的细节。对于设计人员来说,理解和正确应用这些信息对于确保接口的稳定运行至关重要。 ...

    DP物理层及以太网故障排除PPT学习教案.pptx

    - ACTIVE灯熄灭表示无数据收发活动;若闪烁,则表明正在进行数据收发。 - **替换法**:通过替换线路、电缆、光纤、板卡、槽位甚至整个设备来定位故障源头。 - **配置接口环回**:设置以太网端口进行外部或内部环...

    TalkToMe:Twisted 消息服务器 + iOS 8 客户端 swift

    此外,`NSInputStream`和`NSOutputStream`可以用于读写服务器的数据流,实现数据的收发。 考虑到项目描述中提及在Xcode中启动应用,这意味着客户端应用是用Xcode这个iOS和macOS的官方开发环境编译和运行的。在Xcode...

    局域网聊天工具,文件发送与接收

    开发局域网聊天工具时,常见的技术栈可能包括Python的Twisted或Tornado库,Java的Socket编程,或者使用Node.js的socket.io库。对于前端,JavaScript和WebSockets可以用于实时通信。 7. **未来改进**: 要完成文件...

    聊天工具制作代码示例(服务端)

    综上所述,"聊天工具制作代码示例(服务端)"涉及了TCP网络编程的基础知识,包括TCP协议、服务器端编程、多线程处理、数据收发以及异常处理等。通过学习和理解这些概念,开发者可以构建出稳定可靠的聊天工具服务端。

    12864液晶驱动程序

    这类LCD通常采用STN(Super Twisted Nematic)技术,提供黑白或蓝底白字的显示效果。它们具有低功耗、稳定性好、价格适中的特点,因此在许多嵌入式项目中广泛应用。 串口通信: 串口通信,也称为串行通信,是一种...

    嵌入式课后答案整理.docx

    - **LCD控制器:** 支持STN(Super Twisted Nematic)和TFT(Thin Film Transistor)类型的液晶显示屏。 - **USB主控制器:** 提供主机模式下的USB连接功能。 - **时钟与电源管理:** 管理系统的时钟频率和电源控制。 ...

    计算机网络技术试题及答案.doc

    4. 数字通信中,同步技术用于保证收发双方的时间基准一致,从而正确解码信号。 5. 能实现路由选择、拥塞控制与互连功能的层是网络层,在OSI模型中对应为第三层。 6. TCP协议在TCP/IP参考模型中工作在传输层,即第...

Global site tag (gtag.js) - Google Analytics