def sendTDS(self, packetType, data, packetID=1): if (len(data) - 8) > self.packetSize: remaining = data[self.packetSize - 8:] tds = TDSPacket() tds['Type'] = packetType tds['Status'] = TDS_STATUS_NORMAL tds['PacketID'] = packetID tds['Data'] = data[:self.packetSize - 8] self.socketSendall(str(tds)) while len(remaining) > (self.packetSize - 8): packetID += 1 tds['PacketID'] = packetID tds['Data'] = remaining[:self.packetSize - 8] self.socketSendall(str(tds)) remaining = remaining[self.packetSize - 8:] data = remaining packetID += 1 tds = TDSPacket() tds['Type'] = packetType tds['Status'] = TDS_STATUS_EOM tds['PacketID'] = packetID tds['Data'] = data self.socketSendall(str(tds))
def sendTDS(self, packetType, data, packetID = 1): if (len(data)-8) > self.packetSize: remaining = data[self.packetSize-8:] tds = TDSPacket() tds['Type'] = packetType tds['Status'] = TDS_STATUS_NORMAL tds['PacketID'] = packetID tds['Data'] = data[:self.packetSize-8] self.socketSendall(tds.getData()) while len(remaining) > (self.packetSize-8): packetID += 1 tds['PacketID'] = packetID tds['Data'] = remaining[:self.packetSize-8] self.socketSendall(tds.getData()) remaining = remaining[self.packetSize-8:] data = remaining packetID+=1 tds = TDSPacket() tds['Type'] = packetType tds['Status'] = TDS_STATUS_EOM tds['PacketID'] = packetID tds['Data'] = data self.socketSendall(tds.getData())
def recvTDS(self, packetSize=None): # Do reassembly here if packetSize is None: packetSize = self.packetSize packet = TDSPacket(self.socketRecv(packetSize)) status = packet['Status'] packetLen = packet['Length'] - 8 while packetLen > len(packet['Data']): data = self.socketRecv(packetSize) packet['Data'] += data remaining = None if packetLen < len(packet['Data']): remaining = packet['Data'][packetLen:] packet['Data'] = packet['Data'][:packetLen] while status != TDS_STATUS_EOM: if remaining is not None: tmpPacket = TDSPacket(remaining) else: tmpPacket = TDSPacket(self.socketRecv(packetSize)) packetLen = tmpPacket['Length'] - 8 while packetLen > len(tmpPacket['Data']): data = self.socketRecv(packetSize) tmpPacket['Data'] += data remaining = None if packetLen < len(tmpPacket['Data']): remaining = tmpPacket['Data'][packetLen:] tmpPacket['Data'] = tmpPacket['Data'][:packetLen] status = tmpPacket['Status'] packet['Data'] += tmpPacket['Data'] packet['Length'] += tmpPacket['Length'] - 8 # print packet['Length'] return packet