using Spectre.Console; namespace IP_port_checker.SubnetScanner { public class SubnetValid { public static string SubValid(string promt, ref string IP, ref int Mask) { while (true) { Console.Write(promt); string? cidr = Console.ReadLine(); //провека на пустой ввод или на содержание слеша if (string.IsNullOrEmpty(cidr) || !cidr.Contains('/')) { AnsiConsole.MarkupLine("[red]Ошибка: нужен формат IP/маска[/]"); continue; } string[] parts = cidr.Split('/'); //кол-во частей подсети после сплита if (parts.Length != 2) { AnsiConsole.MarkupLine("[red]Неверный формат [/]"); continue; } //проверка на числовое значение и ограничения маски if (!int.TryParse(parts[1], out int mask) || mask != 24) { AnsiConsole.MarkupLine("[red]Маска должна быть числом 24 (в ходе разработки добавятся другие маски)[/]"); continue; } //проверка айпи string[] parts1 = parts[0].Split('.'); bool IPv4Valid = parts1.Length == 4 && parts1.All(p => byte.TryParse(p, out _)); if (!IPv4Valid) { AnsiConsole.MarkupLine("[red]Неверный IP [/]"); continue; } IP = parts[0]; Mask = Convert.ToInt32(parts[1]); return cidr; } } } }