如何使用twisted手动发送数据

2024-03-25

我是扭曲框架的新手。

我知道有很多回调函数会自动触发

当连接建立或丢失时。

但我不知道如何在没有这些回调的情况下发送数据。

例如,我想放一个方法custom_write()用于发送数据。

    def custom_write(self,data):
        self.transport.write(
            data)

并触发我的函数main(): method.

def main():
    try:
        p_red("I'm Client")
        f = EchoFactory()
        reactor.connectTCP("localhost",
                            8000,
                            f)

by the reactor.custom_write("HAHAHA")

如果我在不同的端口创建多个反应器绑定会怎样?

Eg: localhost:1234, localhsot:5678

并将不同的两条消息发送到 2 个连接。

Eg: "Thanks" to port 1234 , Bye~ to port 5678

任何信息都可以给我。

Thanks

class EchoClient(protocol.Protocol):

    def connectionMade(self):
        self.transport.write(
            "I'm cli")

    def custom_write(self,data):
        self.transport.write(
            data)

    def dataReceived(self, data):
        print "Server said:", data 
        self.transport.loseConnection()
        pass

    def connectionLost(self, reason):
        print("[{0}] Lose connection...".format(
            self.__class__.__name__)
        )
        pass        

class EchoFactory(protocol.ClientFactory):

    protocol = EchoClient
    """docstring for EchoFactory"""
    def clientConnectionFailed(self,
                               connector,
                               reason):
        print "[{0}] Connection failed - goodbye".format(
            self.__class__.__name__)
        reactor.stop()

    def clientConnectionLost(self,
                             connector,
                             reason):        
        print "[{0}] Connection lost - goodbye".format(
            self.__class__.__name__)    
        reactor.stop()

def main():
    try:
        p_red("I'm Client")
        f = EchoFactory()
        reactor.connectTCP("localhost",
                            8000,
                            f)
        try:
            reactor.run()
        except BaseException  as e:
            traceback.print_exc(file=sys.stdout)
            raise e

        pass
    except BaseException  as e:
        traceback.print_exc(file=sys.stdout)
        raise e

    pass

您可以致电connectTCP()不止一次并使用不同的主机、端口。connectTCP()立即返回,无需等待完整交换完成。要发送不同的字符串,您可以将它们传递到工厂,使它们可供协议使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用twisted手动发送数据 的相关文章

随机推荐