2011-04-05 4 views
0

트위스트로 연주하려고합니다. 나는 이미 적절한 Factory를 사용하여 서버와 클라이언트를 만들려고 시도했다. 환상적인 프레임 워크이지만 문자열 만 보낼 수 있습니다. ( 일부 목록 또는 배열 객체를 시작으로 보내고 나중에 클라이언트의 서버 객체를 사용할 수 있습니다. 그러나 현재 몇 가지 간단한 질문이 있습니다.Twisted PerspectiveBroker/ServerFactory 질문

1) Factory 모델에서 "clientConnectionFailed"또는 "clientConnectionLost"와 같은 메서드를 사용했는데 PB를 사용하여 동일한 메서드를 얻으려면 어떻게해야합니까? 그들은 클라이언트/서버 문제를 예방하는 데 매우 유용했습니다.

2) "dataReceived"및 "connectionLost"또는 "connectionMade"와 같은 메서드도 사용했는데 PB를 사용하여이 메서드의 동일한 기능을 어떻게 얻을 수 있습니까?

제가 알기로는 공장 대신 PB 모델을 사용하여 코드를 다시 작성하고 싶습니다. 나는 예를 들었지만 공장의 것과는 달리 이해할 수는 없다. 사전에 어떤 도움

감사합니다 =) 당신은 여전히에 clientConnectionFailedclientConnectionLost 전화를받을 수 있도록

답변

2

PBClientFactory가하는 ClientFactory입니다. 원하는 경우 하위 클래스로 재정의하십시오. Broker (PB와 함께 사용되는 프로토콜 클래스)과 RemoteReference에 의해 구현되는 notifyOnDisconnect 메소드를 사용할 수도 있습니다.이 메소드는 PB를 사용할 때 종종 인스턴스를 갖습니다.

원하는 경우 프로토콜에서 여전히 connectionMadeconnectionLost을 무시할 수 있습니다. 앞에서 언급했듯이 프로토콜은 Broker입니다. 하위 클래스를 만들고, 일부 메서드를 재정의하고, 하위 클래스 (인스턴스가 아닌 클래스)를 PBClientFactory의 특성으로 설정합니다.

그러나 Broker.dataReceived을 무시하면 안됩니다. PB는 순서가 있고 신뢰할 수있는 스트림 지향 바이트 전송이 아닙니다. 바이트 단위가 전달 될 때까지 기다리지 않고 자신의 바이트 단위로 응답합니다. PB는 원격 객체 및 메서드 호출 프로토콜입니다. 이 메서드를 사용하여 네트워크를 통해 메서드를 호출하고 해당 메서드 호출에 개체를 전달합니다. 서버에서 메서드를 호출 할 수있는 클라이언트 인 경우 remote_* 메서드를 정의합니다.

PB 문서에 자세히 설명되어 있습니다. "Perspective Broker"섹션 (http://twistedmatrix.com/documents/current/core/howto/)을 참조하십시오.