IPCheckUtil — консольное приложение на C#, для анализа списка IP-адресов.
Программа загружает IP-адреса из удалённого текстового файла, получает информацию о каждом IP через публичное API ipinfo.io, вычисляет статистику по странам и городам.
Проект реализован с использованием асинхронного кода, разделения ответственности и обработки ошибок.
- Загрузка всех IP-адресов из файла по URL в память
- Получение информации об IP-адресах через API
https://ipinfo.io/{ip}/json - Подсчёт количества IP-адресов для каждой страны
- Определение страны с максимальным числом IP
- Вывод уникальных городов для этой страны
- Корректное завершение приложения с кодами выхода:
0— успешное выполнение2— ожидаемая (известная) ошибка1— неизвестная ошибка
IpData.cs - модель данных IP-адреса. Отражает структуру JSON-ответа API ipinfo.io. Используется для десериализации данных и дальнейшего анализа.
FileReaderService.cs - отвечает за загрузку IP-адресов:
- Выполняет HTTP-запрос к текстовому файлу
- Построчно считывает IP-адреса асинхронно
- Проверяет, что файл не пуст
IpApiService.cs - отвечает за работу с API ipinfo.io:
- Отправляет HTTP-запросы для получения информации об IP
- Обрабатывает лимиты запросов (HTTP 429)
- Десериализует JSON-ответы в
IpData
AnalysisService.cs - отвечает за анализ полученных данных:
- Формирует статистику IP по странам
- Выводит статистику в консоль
- Определяет страну с максимальным количеством IP
- Выводит список уникальных городов этой страны
Содержит пользовательские исключения приложения:
- Используются для обработки ожидаемых ошибок
- Позволяют корректно завершать приложение с нужным кодом выхода
- Улучшают читаемость кода для разработчиков
Constants.cs - содержит общие константы приложения:
- URL файла с IP-адресами
- Базовый URL API
- Общий экземпляр
HttpClient
- C# (.NET)
- Асинхронное программирование (
async / await) HttpClientNewtonsoft.Jsonдля десериализации JSON- LINQ
- Разделение ответственности между слоями
- Асинхронная работа с сетью и потоками
- Явная обработка ошибок и кодов завершения
- Отсутствие лишних зависимостей