Twisted Matrix로 TCP Client 만들기
- Development/Python
- 2008. 9. 19.
ㅋ
앞서 간단히 만든 서버에 접속할 클라이언트를 만들어 봤다.
참고로, 창의적으로 고안해서 만든게 아니라 googling 해서 뜨는 걸 보고
작성했다. 아마도 메일링리스트 였던 듯. (나중에 출처를 찾게 되면 꼭 수정해야겠다)
이와 같이, 클라이언트용 프로토콜과 팩토리를 만들었으면 서버에 접속하도록 해보자.
이렇게 하면, 앞서 띄운 서버에 연결을 하게 되고, 웬만하면 연결이 끊기지 않는다.
(기특하다)
물론, 몇몇 필요한 클래스는 앞서 import 해줘야 한다.
예)
앞서 간단히 만든 서버에 접속할 클라이언트를 만들어 봤다.
# 프로토콜 class TestClient(LineReceiver): def connectionMade(self): self.sendLine("A new connection has been made!") self.factory.clientReady(self) def lineReeived(self, line): print "$ got msg [%s]\r\n" % line def connectionLost(self, reason): reactor.stop() # 팩토리 class TestFactory(ClientFactory): protocol = TestClient def __init__(self): self.startFactory() def clientConnectionFailed(self, connector, reason): reactor.stop() def clientConnectionLost(self, connector, reason): reactor.stop() def startFactory(self): print '-- startFactory() called' self.messageQueue = [] self.clientInstance = None def clientReady(self, instance): print '-- clientReady() called' self.clientInstance = instance for msg in self.messageQueue: self.sendMessge(msg) def sendMessage(self, msg): if self.clientInstance is not None: print '$ client instance is not null' self.clientInstance.sendLine(msg) else: print '$ client instance is null' self.messageQueue.append(msg) |
참고로, 창의적으로 고안해서 만든게 아니라 googling 해서 뜨는 걸 보고
작성했다. 아마도 메일링리스트 였던 듯. (나중에 출처를 찾게 되면 꼭 수정해야겠다)
이와 같이, 클라이언트용 프로토콜과 팩토리를 만들었으면 서버에 접속하도록 해보자.
if __name__ == '__main__': f = TestFactory() reactor.connectTCP('127.0.0.1', 8001, f) reactor.run() |
이렇게 하면, 앞서 띄운 서버에 연결을 하게 되고, 웬만하면 연결이 끊기지 않는다.
(기특하다)
물론, 몇몇 필요한 클래스는 앞서 import 해줘야 한다.
예)
from twisted.protocols.basic import LineReceiver from twisted.internet.protocol import ClientFactory, ServerFactory from twisted.internet import reactor |
'Development > Python' 카테고리의 다른 글
queue의 push/pop 속도 비교 (0) | 2009.03.30 |
---|---|
python class의 메소드별 단위 테스트 (unittest pyUnit vs py.test) (1) | 2009.02.12 |
현재 클래스의 이름 얻기 + 현재 클래스의 메소드 얻기 (0) | 2009.02.04 |
[Twisted] adpapi - Query 실행하기/ CallBack 함수에 argument 전달하기 (0) | 2008.10.31 |
Accessing RDMBS Using Twisted (0) | 2008.10.15 |
OptionParser를 활용한 commandline parsing 하기 (0) | 2008.10.02 |
어떤 구문의 소요시간을 milliseconds로 확인하려면 (0) | 2008.09.19 |
Twisted Matrix 로 TCP Server 만들기 (0) | 2008.09.19 |