꼬인 서버와 클라이언트간에 데이터를 보내십시오
문제
서버와 트위스트로 구현 된 클라이언트간에 데이터를 전송하려고합니다.내가 아는 한 self.transport.write ([data])를 사용하여 데이터가 문자열 인 경우에만 작동합니다.다른 유형의 물건을 보낼 수있는 다른 방법이 있습니까?고맙습니다!
해결책
소켓이 바이트를 수행합니다. 그것이 그들이 휴대하는 유일한 종류입니다. TCP 연결의 두 개의 두 개의 끝점은 바이트 만 서로 만 전달할 수 있습니다.
바이트는 모든 통신 형태의 가장 유용한 데이터 구조가 아닙니다. 따라서이 바이트 전송 위에 바이트를 포맷하고 해석하는 계획을 발명합니다. 이들은 프로토콜입니다.
twisted는 프로토콜을 클래스로 나타냅니다. almsot 항상 특정 계획을 구현하는 twisted.internet.protocol.Protocol
의 서브 클래스.
이 클래스는 순수한 바이트가 순수한 바이트 인 무언가가 아닌 무언가를 돌리는 방법을 가지고 있습니다. 예를 들어, twisted.protocols.basic.NetstringReceiver
는 NetString 프로토콜의 구현입니다. 바이트 수와 바이트 스스로를 나타내는 특정 바이트 수를 바이트로 바꿉니다. 바이트 카운트가 전달되어야하는 정보는 즉시 명백하지 않기 때문에 이것은 다소 미묘한 프로토콜입니다.
어떤 종류의 커뮤니케이션을 필요로하는지 생각하고 싶습니다. 이는 통신을 수행하기 위해 선택할 프로토콜에 대해 특정 것을 제안해야합니다.
연결의 다른쪽에있는 파이썬 객체의 메소드를 호출 할 수 있으려면 꼬인 확산
대신 상호 교차 언어를 원하면 정수, 문자열 및 목록과 같은 간단한 유형을 전달하면 XML-RPC ( 삐 었는가? twisted how-to> 더 적합하다.
XML-RPC보다 효율적인 공간이 더 많은 프로토콜이 필요한 경우 amp 가 더 적절할 수 있습니다.
목록이 계속됩니다. :)