diff --git a/PortScanner/IPValidator.cs b/PortScanner/IPValidator.cs new file mode 100644 index 0000000..87fb4bb --- /dev/null +++ b/PortScanner/IPValidator.cs @@ -0,0 +1,41 @@ +using System.Net; +using System.Net.Sockets; + +namespace IP_port_checker.PortScanner +{ + public class IPValidator + { + public static IPAddress ValidateAndReadIPv4orIPv6(ref bool isIPv4) + { + while (true) + { + IPAddress? address = null; + string? ip = Console.ReadLine(); + + if (IPAddress.TryParse(ip, out IPAddress? ipv4) && ipv4.AddressFamily == AddressFamily.InterNetwork) + { + address = ipv4; + isIPv4 = true; + } + else if (IPAddress.TryParse(ip, out IPAddress? ipv6) && ipv6.AddressFamily == AddressFamily.InterNetworkV6) + { + address = ipv6; + isIPv4 = false; + } + if (address is not null) + { + Console.ForegroundColor = ConsoleColor.Green; + Console.WriteLine($"IP: {ip} принят"); + Console.ResetColor(); + return address; + } + Console.ForegroundColor = ConsoleColor.Red; + Console.Write("Неправильный ввод ip-адреcа, попробуйте еще раз: "); + Console.ResetColor(); + } + } + } +} +//предыдущий способ проверки айпи 4 версии. Вечная память герою +//string[] parts = ip.Split('.'); +//bool IPv4Valid = parts.Length == 4 && parts.All(p => byte.TryParse(p, out _));