Esempio n. 1
0
        static void Main(string[] args)
        {
//            var scanner = new NmapScanner();
//            var output = scanner.RunNmapScan("54.83.32.78");

            var pArgs = new ProgramArgumentsModel
            {
                InputFile  = "test.txt",
                OutputFile = "results.txt",
                Jobs       = 5
            };

            Console.WriteLine($"Beginning job run");
            var output = JobsRunner(pArgs).Result;

            Console.WriteLine($"Output: {output}");
        }
Esempio n. 2
0
        public static async Task <string> JobsRunner(ProgramArgumentsModel args)
        {
            var inputChannel = Channel.CreateBounded <string>(
                new BoundedChannelOptions(1000)
            {
                FullMode     = BoundedChannelFullMode.Wait,
                SingleReader = false,
                SingleWriter = true
            });

            var resultChannel = Channel.CreateBounded <string>(
                new BoundedChannelOptions(1000)
            {
                FullMode     = BoundedChannelFullMode.Wait,
                SingleReader = true,
                SingleWriter = false
            });

            var resultsTask = Task.Run(() => ResultsWriterAsync(resultChannel.Reader, args.OutputFile));

            var Jobs = new List <Task>();

            for (int i = 0; i < args.Jobs; i++)
            {
                Jobs.Add(Task.Run(() => ScanRunner(inputChannel.Reader, resultChannel.Writer)));
            }
            var targets = System.IO.File.ReadLines(args.InputFile);

            foreach (var target in targets)
            {
                inputChannel.Writer.TryWrite(target);
            }
            inputChannel.Writer.Complete();
            await inputChannel.Reader.Completion;
            await Task.WhenAll(Jobs);

            resultChannel.Writer.TryComplete();

            await resultsTask;

            return("Jobs Completed");
        }