Проверка IP адреса на валидность, если в одном из байтов есть начальный нуль - C#
Формулировка задачи:
Добрый день. Считываю параметры из текстового файла, в т.ч. и IP-адрес.
Столкнулся с тем, что IPAddress.Parse(string RemoteIpServer) странным образом преобразовывает String в IPAddress, если в одном из байтов начальным указан нуль (192.168.1.045). Если в одном из байтов IP-адреса нет начальных нулей, то все в порядке (192.168.1.45). Например:
Вывод:
//192.168.1.45
Вывод:
//192.168.1.37
Есть ли метод, который преобразует string в IPAddress правильно в последнем случае?
Листинг программы
- string RemoteIpServer="192.168.1.45";
- IPAddress address = IPAddress.Parse(RemoteIpServer);
- Console.WriteLine(address);
Листинг программы
- string RemoteIpServer="192.168.1.045"; //является вполне допустимо использовать такой IP.
- IPAddress address = IPAddress.Parse(RemoteIpServer);
- Console.WriteLine(address);
Решение задачи: «Проверка IP адреса на валидность, если в одном из байтов есть начальный нуль»
textual
Листинг программы
- static void Main(string[] args) {
- String IP_String="192.168.1.040";
- IPAddress ip;
- if (!IPAddress.TryParse(IP_String, out ip)) return;
- ip=string_to_ip_convert(IP_String);
- }
- static IPAddress string_to_ip_convert(string IP_string)
- {
- String[] bytes = IP_string.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
- IP_string = "";
- int i = 0;
- foreach (string one_byte in bytes)
- {
- //bytes[i] = one_byte.TrimStart('0');
- string temp = one_byte.TrimStart('0');
- IP_string = IP_string + temp;
- if (i < 3) IP_string = IP_string + ".";
- i++;
- }
- Console.WriteLine("Обработанный IP:" + IP_string);
- IPAddress ip = IPAddress.Parse(IP_string);
- return ip;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д