如何使用twisted发送大量数据

时间:2017-10-04 04:17:39

标签: python python-2.7 udp twisted

我目前正在构建一个带有扭曲的UDP客户端服务器协议。我正在使用transport.write()将大量数据发送到我的客户端。我发现的是,只有一部分数据被发送,其余部分永远不会发送。我已经在扭曲的文档中读到,并非所有数据都可以一次接收,这很好,因为我用“#endGram#”终止数据并且有一个等待填充的缓冲区。但是,“#endGram#”终结符永远不会与大量数据一起被接收。

class listen(DatagramProtocol):

    def startProtocol(self):
        self.buffer = ""

    def datagramReceived(self, data, (host, port)):
        print(data)
        if "#endGram#" in data:
            index = data.index("#endGram#")
            allData = self.buffer + data[0:index]
            self.proccess_data(allData)
            self.buffer = data[index+len("#endGram#"):len(data)]
        else:
            self.buffer += data

class Broadcaster(DatagramProtocol):

    def startProtocol(self):
        self.loop = task.LoopingCall(self.sendData)
        self.loop.start(3, True)

    def datagramReceived(self, datagram, address):
        pass

    def sendData(self):
        try:
            Data = self.get_data()
            print(Data)
            data = (json.dumps(Data)+ "#endGram#")
            self.transport.write((data), ("127.0.0.1", 9001))
        except Exception as e:
            print(e)

0 个答案:

没有答案