Migrated from GitHub: hermes-2026-07-15-cpp-net-analyzer
  • C++ 70%
  • HTML 14.3%
  • JavaScript 7.5%
  • CMake 6.6%
  • Dockerfile 1.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-15 13:34:00 +00:00
include/net-analyzer feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
src fix: replace unicode chars with ASCII in terminal output [cron cpp] 2026-07-15 13:34:00 +00:00
tests feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
.gitignore feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
capture-screenshots.mjs feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
CMakeLists.txt feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
CMakePresets.json feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
Dockerfile feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
README.md feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00
screenshot.html feat: net-analyzer - C++23 network analyzer CLI tool [cron cpp] 2026-07-15 13:29:00 +00:00

Net Analyzer — Monitor de red en C++23

Herramienta CLI de análisis de red en C++23 que lee estadísticas de interfaces de red y conexiones TCP directamente desde /proc/net/. Compatible con salida en tabla o JSON, monitorización en tiempo real de ancho de banda y filtrado por interfaz.

Features

  • Estadísticas de interfaz: RX/TX bytes, paquetes, errores y descartes desde /proc/net/dev
  • Conexiones TCP activas: lectura de /proc/net/tcp y /proc/net/tcp6 con detección de proceso asociado
  • Monitorización en tiempo real: modo --monitor con refresco periódico y cálculo de ancho de banda
  • Salida estructurada JSON: integrable con scripts y herramientas externas
  • Filtrado por interfaz: limita la salida a una interfaz específica con --filter
  • Arquitectura RAII: NetAnalyzer con manejo de errores mediante std::expected
  • C++23 moderno: concepts, ranges, string_view, std::println, std::format
  • Logging: spdlog estructurado
  • Tests: Catch2 v3 con unitarios, integración y benchmarks

Stack tecnológico

Componente Tecnología
Lenguaje C++23 (GCC 14)
Build CMake 3.28+ / Ninja
Argumentos CLI11 (FetchContent)
JSON nlohmann-json (FetchContent)
Logging spdlog (FetchContent)
Tests Catch2 v3 (FetchContent)
APIs Linux /proc/net/dev, /proc/net/tcp, /proc/net/tcp6
Contenedor Docker multi-stage (gcc:14)

Requisitos

  • Compiler: GCC 14+ (C++23 completo: std::expected, std::println)
  • CMake: ≥ 3.28
  • Ninja: recomendado
  • Sistema: Linux (lee /proc/net)

Compilación

# Usando CMake presets (recomendado)
cmake --preset debug
cmake --build --preset debug

# O manualmente
cmake -G Ninja -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

# Ejecutar tests
ctest --preset debug

Uso

# Mostrar estadísticas de interfaces
./build/debug/net-analyzer

# Mostrar conexiones TCP activas
./build/debug/net-analyzer --connections

# Modo monitor en tiempo real
./build/debug/net-analyzer --monitor

# Salida JSON
./build/debug/net-analyzer --json

# Filtrar por interfaz
./build/debug/net-analyzer --filter eth0

# Monitor cada 5 segundos
./build/debug/net-analyzer --monitor --interval 5

# Monitor en JSON con filtro
./build/debug/net-analyzer --monitor --json --filter wlan0

Docker

docker build -t net-analyzer .
docker run --rm --net=host net-analyzer

API /proc

Archivo Descripción
/proc/net/dev Estadísticas de interfaces de red
/proc/net/tcp Conexiones TCP IPv4 activas
/proc/net/tcp6 Conexiones TCP IPv6 activas
/proc/[pid]/fd/ Descriptores de archivo por proceso