twisted网络框架的三个基础模块:Protocol, ProtocolFactory, Transport.这三个模块是构成twisted服务器端与客户端程序的基本。
Protocol:Protocol对象实现协议内容,即通信的内容协议
ProtocolFactory: 是工厂模式的体现,在这里面生成协议
Transport: 是用来收发数据,服务器端与客户端的数据收发与处理都是基于这个模块
在windows中安装twisted需要先安装pywin32,自己去下载下就行。随后pip install twisted就会帮我们安装twisted以及zope。
我们结合一张图,以及一段程序来理解下twisted的基础实现:
然后我们首先看看服务器端程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# coding=utf-8
from
twisted.internet.protocol
import
Protocol
from
twisted.internet.protocol
import
Factory
from
twisted.internet.endpoints
import
TCP4ServerEndpoint
from
twisted.internet
import
reactor
clients
=
[]
class
Spreader(Protocol):
def
__init__(
self
, factory):
self
.factory
=
factory
def
connectionMade(
self
):
self
.factory.numProtocols
=
self
.factory.numProtocols
+
1
self
.transport.write(
"欢迎来到Spread Site, 你是第%s个客户端用户!\n"
%
(
self
.factory.numProtocols)
)
print
"new connect: %d"
%
(
self
.factory.numProtocols)
clients.append(
self
)
def
connectionLost(
self
, reason):
self
.factory.numProtocols
=
self
.factory.numProtocols
-
1
clients.remove(
self
)
print
"lost connect: %d"
%
(
self
.factory.numProtocols)
def
dataReceived(
self
, data):
if
data
=
=
"close"
:
self
.transport.loseConnection()
for
client
in
clients:
|