我有一个奇怪的问题。基本上,我现在遇到的问题是处理两个相互连接的不同 LineReceiver 服务器。本质上,如果我要在服务器 A 中输入一些内容,那么我希望在服务器 B 中出现一些输出。反之亦然。我在两个不同的源文件上运行两台服务器(也通过 & shellscript 在不同的进程上运行它们)ServerA.py 和 ServerB.py,端口分别为(12650 和 12651)。我还使用 telnet 连接到每台服务器。
from twisted.internet import protocol, reactor
from twisted.protocols.basic import LineReceiver
class ServerA(LineReceiver);
def connectionMade(self):
self.transport.write("Is Server A\n")
def dataReceived(self, data):
self.sendLine(data)
def lineReceived(self, line):
self.transport.write(line)
def main():
client = protocol.ClientFactory()
client.protocol = ServerA
reactor.connectTCP("localhost", 12650, client)
server = protocol.ServerFactory()
server.protocol = ServerA
reactor.listenTCP(12651, server)
reactor.run()
if __name__ == '__main__':
main()
我的问题是使用 sendLine。当我尝试使用一些任意字符串从 serverA 进行 sendLine 调用时,serverA 最终会吐出确切的字符串,而不是将其发送到在 main() 中完成的连接。究竟为什么会这样?我一直在环顾四周,尝试了我遇到的每个解决方案,但我似乎无法让它正常工作。奇怪的是,我的朋友基本上在做同样的事情,他得到了一些工作结果,但这是我能想到的最简单的程序,试图找出这种奇怪现象的原因。
无论如何,要点是,我希望将输入到 serverA 中的输入出现在 serverB 中。
注意:服务器 A 和服务器 B 具有完全相同的源代码,但类名和端口除外。