- 论坛徽章:
- 0
|
学习使用twisted做简单的服务客户端,发现服务端自动把一个接收包体分隔成多个包给分别处理了,不知怎么回事,附上代码:
-------------srv.py-------------------------
#coding=utf-8
import time,string,sys
from twisted.internet.protocol import Protocol,Factory
if sys.platform == 'linux2':
from twisted.internet import epollreactor
epollreactor.install()
print 'install epoll module ok!'
else:
from twisted.internet import iocpreactor
iocpreactor.reactor.install()
print 'install IOCP module ok!'
from twisted.internet import reactor
class PMSFactory(Factory):
pass
class Echo(Protocol):
def dataReceived(self,data):
print "OK!"
self.transport.write('OK')
f = PMSFactory()
f.protocol = Echo
reactor.listenTCP(1111,f)
reactor.run()
-----------------clnt.py--------------------
#coding=utf-8
from twisted.internet.protocol import Protocol, ClientFactory
class Echo(Protocol):
def dataReceived(self, data):
print "[recv]:",data
self.transport.loseConnection()
def connectionMade(self):
s='a'*10240#此处如果字节数小于4096就不会出现问题
self.transport.write(s)
class EchoClientFactory(ClientFactory):
def buildProtocol(self,addr):
return Echo()
from twisted.internet import reactor
f=reactor.connectTCP('127.0.0.1', 1111, EchoClientFactory())
reactor.run()
-----------------------------------------------
如果客户端一次发的数据超过4096个字符,服务端会截成多个接收包,并且服务端会调用多次dataReceived,
这样的话,如果客户端的请求包体确实要超为4096个,那岂不是服务端不能使用dataReceived处理了? |
|