LineReCeiver 是以换行符为分隔符的协议。
__author__ = 'zhoukunpeng'
from twisted.internet import reactor,protocol
from twisted.protocols import basic
class LineSever(basic.LineReceiver):
def lineReceived(self, line):
print "receiverd:",line
self.sendLine(line)
def connectionMade(self):
self.sendLine("hello")
class Sever(protocol.ServerFactory):
protocol=LineSever
object=Sever()
reactor.listenTCP(5001,object)
reactor.run()
客户端:
[root@zkp534 ~]# telnet 192.168.13.187 5001
Trying 192.168.13.187...
Connected to 192.168.13.187.
Escape character is '^]'.
hello
111
111
33333
33333
333333333
333333333
在生产环境中比较常用的应该是basic.Int32StringReceiver basic.Int16StringReceiver basic.Int8StringReceiver ,其通过一个消息头部确定消息body的大小,而不再通过换行符。
如: 对于basic.Int32StringReceiver 其消息帧结构应为如下: