[英]Twisted appears to not call dataReceived
我一直在編寫一個概念驗證型程序,該程序通過網絡發送屏幕截圖,由於某種原因,在發送數據后未調用dataRecieved方法。 這是我的代碼
服務器
from twisted.internet import protocol, reactor
from twisted.internet.endpoints import TCP4ServerEndpoint
from PIL import Image
class ImageProto(protocol.Protocol):
def dataReceived(self, data):
print("test")
print(isinstance(Image.open(data), Image.Image))
class ImageProtoFactory(protocol.Factory):
def buildProtocol(self, addr):
return ImageProto()
endpoint = TCP4ServerEndpoint(reactor, 1336)
endpoint.listen(ImageProtoFactory())
reactor.run()
客戶
from twisted.internet.protocol import Protocol
from twisted.internet import reactor
from twisted.internet.endpoints import TCP4ClientEndpoint, connectProtocol
from PIL import ImageGrab
from io import BytesIO
class ImageSender(Protocol):
def connectionMade(self):
i = ImageGrab.grab()
i.resize((1280, 720))
output = BytesIO()
i.save(output, format = "png")
output.flush()
self.transport.write(output.getvalue())
self.transport.loseConnection()
reactor.stop()
point = TCP4ClientEndpoint(reactor, "localhost", 1336)
d = connectProtocol(point, ImageSender())
reactor.run()
當在connectionMade
的末尾調用reactor.stop
時,您將立即關閉整個過程,然后再發送任何數據。 刪除它,就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.