public byte[] WrapReliabilityPacket(byte[] packet, bool reliable, AcknowledgeChecker acknowledgeChecker, uint acknowledgeId = 0) { MemoryStream stream = new MemoryStream(); BinaryWriter binaryWriter = new BinaryWriter(stream); binaryWriter.Write(reliable);// escribo si es relaiable if (reliable) { binaryWriter.Write(acknowledgeId);// escribo el ackid uint lastAcknowledge; uint acknowledgeArray; bool hasToConfirm = acknowledgeChecker.GetAcknowledgeConfirmation(out lastAcknowledge, out acknowledgeArray); binaryWriter.Write(hasToConfirm); // si no hay que confirmar, solo mando un bool diciendo que no hay que hacerlo if (hasToConfirm) //si confirmas, mandas la data { binaryWriter.Write(lastAcknowledge); binaryWriter.Write(acknowledgeArray); } } stream.Close(); byte[] reliability = stream.ToArray(); byte[] wrappedBytes = new byte[reliability.Length + packet.Length]; reliability.CopyTo(wrappedBytes, 0); packet.CopyTo(wrappedBytes, reliability.Length); wrappedBytes = WrapCheckSumPacket(wrappedBytes);// creo el checksum para la verificacion de que llegue bien return(wrappedBytes); }