我目前正在构建一个带有扭曲的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)