두 개의 서로 다른 포트 50000과 20000을 통해 서버에 연결하고 있습니다. 하나 이상의 데이터를 쓰고 때로는 다른 데이터를 쓰고 각각 응답을 얻습니다. 어떻게하면 제대로 할 수 있을까요? 꼬인 ClientFactory 서브 클래스에서 참조를 만들어야합니까? 다음은 코드 샘플입니다.꼬인 상태로 클라이언트를 식별하는 방법은 무엇입니까?
import sys
from twisted.internet import reactor
from twisted.python import log
from twisted.internet import defer
from twisted.internet.protocol import Protocol, ClientFactory
log.startLogging(sys.stdout)
class PrimeClient(object):
"""
"""
def __init__(self):
"""
"""
self.factory = PrimeClientFactory()
def connect(self):
servers = [('192.168.110.14', 50000),('192.168.110.14', 20000)]
for host, port in servers:
reactor.connectTCP(host, port, self.factory)
class PrimeProtocol(Protocol):
def __init__(self):
pass
def connectionMade(self):
print 'Connection made: {} {}'.format(self, self.factory)
def dataReceived(self, data):
print 'RCV: {}'.format(data)
def connectionLost(self, reason):
print 'Connection lost: {}'.format(reason)
class PrimeClientFactory(ClientFactory):
"""
"""
protocol = PrimeProtocol
def __init__(self):
pass
def clientConnectionFailed(self, connector, reason):
print 'Connection failed: {} - {}'.format(connector, reason)
def startedConnecting(self, connector):
print 'Started connection: {}'.format(connector)
def main():
prime = PrimeClient()
prime.connect()
reactor.run()
if __name__ == "__main__":
main()
이렇게하면 서버에 두 개의 연결이 생성됩니다. 그렇다면 예를 들어 포트 50000으로 보내려면 연결을 식별 할 수 있습니까?
나는 세계의,하지만 좋은 제안을 사용하지 않도록하기 위해 노력하고있어 (또한,
ClientFactory
및connectTCP
당신은 정말 use the much newer "endpoints" API for clients instead.한다, 이렇게 다소 오래된 방법이다). ClientCreator를보고 어떻게 내 커뮤니케이션에 사용할 수 있을지 생각해 보겠습니다. 이러한 연결을 통해 데이터를 송수신하는 API는 어디에서 제공됩니까? 일반적으로이 꼬인 코드는 전송과 같은 기능을합니다 ... – kepurlaukis실제로 전역을 사용하지 마십시오. – Glyph