使用Twisted建立你的服务器
2010-09-22 11:15:34 来源:WEB开发网这样在用户连接建立时向用户发送一个欢迎消息,然后就断开了与客户机的连接。下面再看一个实现更多事件的协议实现:
Toggle line numbers
1 from twisted.internet.protocol import Protocol
2
3 class Echo(Protocol):
4
5 def connectionMade(self):
6 self.factory.numProtocols = self.factory.numProtocols+1
7 if self.factory.numProtocols > 100:
8 self.transport.write("Too many connections, try later")
9 self.transport.loseConnection()
10
11 def connectionLost(self, reason):
12 self.factory.numProtocols = self.factory.numProtocols-1
13
14 def dataReceived(self, data):
15 self.transport.write(data)
这里不但向应了三个事件:连接初始化、断开连接、接收到数据。而且还使用了factory来存储一个持久的数据(当前并发的用户连接数)。
使用protocol 做完一个rptocol的开发如何让它放入一个可以测试的环境中试验呢?以下是一个最为简单的办法进行测试:
Toggle line numbers
最后的六行代码就可以将你的protocol运行起来,成为一个可测试的daemon运行起来。测试的客户端可以使用你的telnet,用telnet登录到你的服务器的8025端口就可以进行最初级的测试了。这几行代码只需要看看Twisted的文档就能明白它的含义了。之前的reactor的说明中也非常细的说了你可以有的选择和运行方法。
1 from twisted.internet.protocol import Protocol, Factory
2 from twisted.internet import reactor
3
4 class HelloHD(Protocol):
5
6 def connectionMade(self):
7 self.transport.write("Hello This is HD's Test protocolrn")
8 self.transport.loseConnection()
9
10
11 # 下面就是施展Twisted神奇的代码了
12 factory = Factory()
13 factory.protocol = HelloHD
14
15 # 侦听运行于8025端口,最好是一个大于1024的端口
16 reactor.listenTCP(8025, factory)
17 reactor.run()
更多精彩
赞助商链接