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(可以是任何对象写入方法)。 DataForwardingProtocol 的normalizeNewLines属,如果设置为true,它会将Unix风格的\ N换行符标准化为\ R\ N的更标准的网络协议所使用的换行符。
做为 DataForwardingProtocol的子类, StdioProxyProtocol完成设置工作,一旦连接建立,它就建立一个DataForwardingProtocol的实例,叫inputForwarder,设置它的输出为self.transport,然后包装inputForwarder为twisted.internet.stdio的实例,将inputForwarder挂钩到标准的I / O做为网络连接的替换,从标准输入接收到的数据转发到 StdioProxyProtocol网络连接中,最后,设置StdioProxyProtocol的输出属性为stdioWrapper,因此,从连接接收到的数据将被转发到标准输出。
分享到:
相关推荐
- **第5章**:介绍 Twisted 如何支持 RESTful API 的设计与实现,同时还会涉及 XMLRPC 和 SOAP 等远程过程调用技术,帮助读者掌握在不同应用间进行数据交换的方法。 ##### 2.5 认证管理 - **第6章**:探讨如何在 ...
1. **定义协议**:根据需求编写自定义协议类,继承自Twisted提供的基础协议类,实现数据收发的逻辑。 2. **创建工厂**:工厂类创建协议实例,通常会设置一个生成协议实例的方法。 3. **启动反应器**:在主程序中,...
* 线缆类型及距离:双绞线 Twisted-pair、单模光纤 Monomode optical fiber * 电气特性:输入电压 DC5-12V,整机功耗 ≤4.1W * 二层交换:转发延迟 ,支持看门狗功能 * 环境条件:工作温度 -20℃~+70℃,储藏/运输...
协议是 Twisted 中用于处理数据收发的核心组件。每个协议实例都对应于一个特定的网络连接。协议通常包含 `connectionMade` 和 `dataReceived` 方法,分别处理连接建立和数据接收的事件。 ###### 2.1.3 工厂 工厂类...
- **Protocol**(协议):客户端也需要定义相应的协议类来处理数据收发。 - **ClientFactory**(客户端工厂):与服务器端类似,客户端也可以通过工厂模式来创建协议实例。 3. **A Higher-Level Example: ...
NCN5121-D是一款专为KNX Twisted Pair Networks设计的收发器,它符合KNX协会的标准,能够确保数据在楼宇自动化系统中的高效、稳定传输。该器件集成了发送器和接收器功能,支持EIB/KNX TP1协议,可实现双向通信,适用...
- 协议是 Twisted 中用于定义数据收发规则的类,通过继承自 `twisted.internet.protocol.Protocol` 类来实现。 - **2.1.3 工厂** - 工厂用于创建协议实例,并管理客户端和服务器之间的连接。在 Twisted 中,可以...
协议工厂用于生成处理特定类型连接的协议实例,而协议则定义了如何处理数据收发的逻辑。终结点则为不同类型的网络连接(如本地套接字、TCP/IP连接或UNIX域套接字)提供了一致的接口。 总的来说,理解Twisted的...
RS-485是一种串口总线标准,由EIA制定,采用平衡式发送、差分式接收的数据收发器来驱动总线。RS-485标准支持多节点、远距离和高灵敏度的数据传输。该标准的具体规范包括:最大传输距离为1200米,传输速率高达10Mbps...
- **2通道UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)**:支持IrDA 1.0标准,每个通道具有16-byte FIFO(First In First Out,先进先出)缓冲区。 - **4通道DMA(Direct Memory Access,...
ISO-11898-2定义了两种类型,即2线非屏蔽双绞线(2-wire unshielded twisted pair, 2W-UTP)和高电磁兼容性的单线(Single-wire, EMC+)。这些物理层设计确保了数据传输的可靠性和抗干扰性。 2. 电气特性:标准详细...
手册提供了2.5V RGMII I/O的详细信息,以及有关RGMII收发器的描述,包括发送和接收延迟,数据和控制信号编码,以及RGMII布局的细节。对于设计人员来说,理解和正确应用这些信息对于确保接口的稳定运行至关重要。 ...
- ACTIVE灯熄灭表示无数据收发活动;若闪烁,则表明正在进行数据收发。 - **替换法**:通过替换线路、电缆、光纤、板卡、槽位甚至整个设备来定位故障源头。 - **配置接口环回**:设置以太网端口进行外部或内部环...
此外,`NSInputStream`和`NSOutputStream`可以用于读写服务器的数据流,实现数据的收发。 考虑到项目描述中提及在Xcode中启动应用,这意味着客户端应用是用Xcode这个iOS和macOS的官方开发环境编译和运行的。在Xcode...
开发局域网聊天工具时,常见的技术栈可能包括Python的Twisted或Tornado库,Java的Socket编程,或者使用Node.js的socket.io库。对于前端,JavaScript和WebSockets可以用于实时通信。 7. **未来改进**: 要完成文件...
综上所述,"聊天工具制作代码示例(服务端)"涉及了TCP网络编程的基础知识,包括TCP协议、服务器端编程、多线程处理、数据收发以及异常处理等。通过学习和理解这些概念,开发者可以构建出稳定可靠的聊天工具服务端。
这类LCD通常采用STN(Super Twisted Nematic)技术,提供黑白或蓝底白字的显示效果。它们具有低功耗、稳定性好、价格适中的特点,因此在许多嵌入式项目中广泛应用。 串口通信: 串口通信,也称为串行通信,是一种...
- **LCD控制器:** 支持STN(Super Twisted Nematic)和TFT(Thin Film Transistor)类型的液晶显示屏。 - **USB主控制器:** 提供主机模式下的USB连接功能。 - **时钟与电源管理:** 管理系统的时钟频率和电源控制。 ...
4. 数字通信中,同步技术用于保证收发双方的时间基准一致,从而正确解码信号。 5. 能实现路由选择、拥塞控制与互连功能的层是网络层,在OSI模型中对应为第三层。 6. TCP协议在TCP/IP参考模型中工作在传输层,即第...