创建一个tcp连接

时间:2020-12-16 20:56:21

创建步骤

调用reactor.connetcTCP()方法打开一个TCP连接,传递一个ClientFactory对象作为第三个参数。ClientFactory对象等待连接被建立,然后创建一个Protocol对象来管理连接中的数据流。

相关接口介绍

connectTCP
返回一个提供Iconnector的连接器对象,当连接被创建/失败/丢失时,这个连接器将在factory调用各种回调。

def connectTCP(host, port, factory, timeout=30, bindAddress=None): 
    host        一个ip地址
    port        端口号
    factory     一个twisted.internet.protocol.ClientFactory的实例
    timeout     等待时间
    bindAddress (主机,端口)元组绑定到本地地址,或者为None

listenTCP
连接一个给定的协议工厂到给定数字TCP/IP端口。

def listenTCP(port, factory, backlog=50, interface=''): 
    port        一个监听端口
    factory     一个twisted.internet.protocol.ServerFactory 实例
    backlog     监听队列的大小
    interface   
    Returns     一个提供监听端口的对象

例子

该例子展示了如何在电脑和Internet之间建立一个连接(www.baidu.com)

//connected.py
from twisted.internet import reactor,protocol

class QuickDisconnectProtocol(protocol.Protocol):
    def connectionMade(self):
        print"Connected to %s."%self.transport.getPeer().host
        self.transport.loseConnection()

class BasicClientFactory(protocol.ClientFactory):
    protocol = QuickDisconnectProtocol
    def clientConnectionLost(self, connector, reason):
        print"Lost connection:%s"%reason.getErrorMessage()
        reactor.stop()

def clientConnectionFailed(self, connector, reason):
        print"connection failed:%s"%reason.getErrorMessage()
        reactor.stop()

reactor.connectTCP('www.baidu.com', 80, BasicClientFactory())
reactor.run()

执行python connection.py,出现如下结果,则成功
创建一个tcp连接