我是扭曲框架的新手。
我知道有很多回调函数会自动触发
当连接成功或丢失时。
但我不知道如何在没有这些回调的情况下发送数据。
例如,我想放一个方法custom_write()
来发送数据。
def custom_write(self,data):
self.transport.write(
data)
并在我的main():
方法中触发该功能。
def main():
try:
p_red("I'm Client")
f = EchoFactory()
reactor.connectTCP("localhost",
8000,
f)
由reactor.custom_write("HAHAHA")
如果我在不同的端口创建多个reactor绑定怎么办?
Eg: localhost:1234, localhsot:5678
并将不同的两条消息发送到2个连接。
例如:"Thanks" to port 1234
,Bye~ to port 5678
任何信息都可以给我。
由于
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
答案 0 :(得分:0)
您可以多次拨打connectTCP()
并使用不同的主机端口。 connectTCP()
立即返回,无需等待完整的交换完成。要发送不同的字符串,您可以将它们传递给可以使它们可用于协议的工厂。