Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPCheckUtil — консольное приложение для чтения и анализа IP-адресов

Описание

IPCheckUtil — консольное приложение на C#, для анализа списка IP-адресов.
Программа загружает IP-адреса из удалённого текстового файла, получает информацию о каждом IP через публичное API ipinfo.io, вычисляет статистику по странам и городам.

Проект реализован с использованием асинхронного кода, разделения ответственности и обработки ошибок.

Реализованный функционал

  1. Загрузка всех IP-адресов из файла по URL в память
  2. Получение информации об IP-адресах через API https://ipinfo.io/{ip}/json
  3. Подсчёт количества IP-адресов для каждой страны
  4. Определение страны с максимальным числом IP
  5. Вывод уникальных городов для этой страны
  6. Корректное завершение приложения с кодами выхода:
    • 0 — успешное выполнение
    • 2 — ожидаемая (известная) ошибка
    • 1 — неизвестная ошибка

🗂️ Структура проекта

📁 Models

IpData.cs - модель данных IP-адреса. Отражает структуру JSON-ответа API ipinfo.io. Используется для десериализации данных и дальнейшего анализа.

📁 Services

FileReaderService.cs - отвечает за загрузку IP-адресов:

  • Выполняет HTTP-запрос к текстовому файлу
  • Построчно считывает IP-адреса асинхронно
  • Проверяет, что файл не пуст

IpApiService.cs - отвечает за работу с API ipinfo.io:

  • Отправляет HTTP-запросы для получения информации об IP
  • Обрабатывает лимиты запросов (HTTP 429)
  • Десериализует JSON-ответы в IpData

AnalysisService.cs - отвечает за анализ полученных данных:

  • Формирует статистику IP по странам
  • Выводит статистику в консоль
  • Определяет страну с максимальным количеством IP
  • Выводит список уникальных городов этой страны

📁 Exceptions

Содержит пользовательские исключения приложения:

  • Используются для обработки ожидаемых ошибок
  • Позволяют корректно завершать приложение с нужным кодом выхода
  • Улучшают читаемость кода для разработчиков

📁 Utils

Constants.cs - содержит общие константы приложения:

  • URL файла с IP-адресами
  • Базовый URL API
  • Общий экземпляр HttpClient

Используемые технологии

  • C# (.NET)
  • Асинхронное программирование (async / await)
  • HttpClient
  • Newtonsoft.Json для десериализации JSON
  • LINQ

📎 Особенности реализации

  • Разделение ответственности между слоями
  • Асинхронная работа с сетью и потоками
  • Явная обработка ошибок и кодов завершения
  • Отсутствие лишних зависимостей

About

IPCheckUtil — консольное приложение для анализа IP-адресов через API ipinfo.io.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages