def listenForConnections(srcIP, srcPort): sock = Connection.createSocket() sock.bind((srcIP, srcPort)) data, address = sock.recvfrom(Packet.MAX_PACKET_LENGTH) conn = Connection(srcIP, srcPort, address[0], address[1], sock) conn.buffer.append(Packet.fromRawString(data)) return conn
def receive(self): if len(self.buffer) > 0: return self.buffer.pop() targetTime = time.time() + (Connection.TIMEOUT * 2) while targetTime > time.time(): data, address = self.sock.recvfrom(Packet.MAX_PACKET_LENGTH) otherConnection = next((x for x in Connection.ActiveConnections if x.destAddress == address and x.destAddress != self.destAddress), None) if address == self.destAddress: if not Packet.checkIntegrity(data): return None return Packet.fromRawString(data) elif otherConnection != None: otherConnection.buffer.append(Packet.fromRawString(data)) else: #if address is not in active connections. Throw packet away continue return None
def test_serialize_data(self): self.assertEqual( Packet.fromRawString(TestPacket.packet.serialize()).data, TestPacket.data, "Data Flag does not serialize or is not read Correctly" )
def test_sanityCheck(self): original = TestPacket.packet deserialized = Packet.fromRawString(original.serialize()) self.assertEqual(original, deserialized)