user@devops:~$ cat README.md
TCP Watch
# Descripción
TCP Watch (cpp-tcp-watch) es un monitor de conexiones TCP de Linux escrito en C++23 sin dependencias que lee la tabla de sockets del kernel desde /proc/net/tcp y /proc/net/tcp6. Parseo robusto: lineas malformadas o cortas se saltan sin romper el resto, y tolera los campos extra de kernels modernos (4.1+). Decodificacion de direcciones verificada contra datos reales: IPv4 little-endian (0100007F -> 127.0.0.1) e IPv6 con compresion :: y deteccion de IPv4-mapped (::ffff:a.b.c.d) partiendo del byte-swap de las palabras de red que el kernel imprime con %08X en host little-endian. 13 estados TCP decodificados con colores por estado en la tabla (LISTEN cian, ESTAB verde, TIME_WAIT dim, inestables amarillo, CLOSING rojo). Resolucion inode -> PID -> proceso: escanea los symlinks socket:[inode] en /proc/*/fd una vez por snapshot, asocia cada socket a su proceso via /proc/<pid>/comm, con --no-resolve para desactivarla. Tabla de listeners (puerto, estado, uid, pid, proceso, inode) y conexiones activas top-N por colas TX+RX (--top N); modo --ports con el top-N de puertos locales por numero de conexiones y desglose por estado; filtro --state NOMBRE con abreviaturas (ESTAB, TW, LISTEN...). Modo watch en vivo (--watch N) con tasas delta por estado (conexiones/s), tiempo transcurrido, limpieza de pantalla y flush para que la salida sobreviva a timeout/kill. Salida JSON completa (--json) con {connections{total, ipv4, ipv6, by_state}, connections_list[{local, remote, state, uid, pid, proc, tx, rx, inode, family}], summary}. Modo demo (--demo) con muestra sintetica embebida (sshd, nginx, postgres, chrome, curl, IPv6 real) cuyos contadores crecen en watch. 33 tests de auto-verificacion (--selftest): decodificacion IPv4/IPv6, estados, parseo sintetico, agregacion, deltas, JSON y smoke test condicional contra el /proc real. Cero dependencias: compilacion directa con g++ -std=c++23.
# Características principales
$ Parseo robusto de /proc/net/tcp y /proc/net/tcp6: lineas malformadas o cortas se saltan sin romper el resto, tolera campos extra de kernels modernos (4.1+)
$ Decodificacion de direcciones IPv4 (little-endian) e IPv6 con compresion :: y deteccion de IPv4-mapped (::ffff:a.b.c.d), verificada contra /proc/net/tcp6 real
$ 13 estados TCP decodificados: LISTEN, ESTABLISHED, SYN_SENT, SYN_RECV, FIN_WAIT1/2, TIME_WAIT, CLOSE, CLOSE_WAIT, LAST_ACK, CLOSING, NEW_SYN_RECV
$ Resolucion inode -> PID -> proceso escaneando los symlinks socket:[inode] de /proc/*/fd y leyendo /proc/<pid>/comm (--no-resolve para desactivar)
$ Tabla de listeners + conexiones activas top-N por colas TX+RX (--top N) con colores por estado: LISTEN cian, ESTAB verde, TIME_WAIT dim, inestables amarillo, CLOSING rojo
$ Modo --ports: top-N puertos locales por numero de conexiones con desglose por estado, y filtro --state NOMBRE con abreviaturas (ESTAB, TW, LISTEN...)
$ Modo watch en vivo (--watch N) con tasas delta por estado (conexiones/s), tiempo transcurrido, limpieza de pantalla y flush (salida completa incluso con timeout/kill)
$ Salida JSON completa para scripting (--json) y 33 tests de auto-verificacion (--selftest) con smoke test condicional contra el /proc real; modo --demo sintetico para contenedores/VMs
# Galería
# Tecnologías utilizadas