twisted-异步网络

本文介绍了一个使用Python Twisted库进行简单连接测试的例子。通过定义一个特殊的协议类CallbackAndDisconnectProtocol来实现连接建立后立即断开的功能,并通过Deferred对象管理异步操作。此测试可用于验证与目标主机端口的连接是否正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from twisted.internet import reactor, defer, protocol



class CallbackAndDisconnectProtocol(protocol.Protocol):

    def connectionMade(self):

        self.factory.deferred.callback("Connected!")

        self.transport.loseConnection( )



class ConnectionTestFactory(protocol.ClientFactory):

    protocol = CallbackAndDisconnectProtocol



    def _ _init_ _(self):

        self.deferred = defer.Deferred( )



    def clientConnectionFailed(self, connector, reason):

        self.deferred.errback(reason)



def testConnect(host, port):

    testFactory = ConnectionTestFactory( )

    reactor.connectTCP(host, port, testFactory)

    return testFactory.deferred



def handleSuccess(result, port):

    print "Connected to port %i" % port

    reactor.stop( )



def handleFailure(failure, port):

    print "Error connecting to port %i: %s" % (

        port, failure.getErrorMessage( ))

    reactor.stop( )



if __name__ == "_ _main_ _":

    import sys

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

        print "Usage: connectiontest.py host port"

        sys.exit(1)



    host = sys.argv[1]

    port = int(sys.argv[2])

    connecting = testConnect(host, port)

    connecting.addCallback(handleSuccess, port)

    connecting.addErrback(handleFailure, port)

    reactor.run( )



 

 

E:\test>python test.py www.hao123.com 80
Connected to port 80

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值