rifkiradiv15/tcp-port-scanner

GitHub: rifkiradiv15/tcp-port-scanner

一个纯 Go 实现的轻量级 TCP 端口扫描 CLI 工具,通过 goroutine 并发和标准库帮助开发者学习网络编程原理。

Stars: 0 | Forks: 0

# TCP 端口扫描器 一个简单的 CLI 工具,用于扫描主机上的 TCP 端口。使用纯 Go 构建——没有外部依赖。作为 Go 学习作品集项目构建——非常适合想要了解 Go 中网络编程的 SRE/DevOps 工程师。 ## 为什么开发这个工具 作为一名 SRE,我经常使用 `nmap` 等工具进行网络调试和事件响应。我想了解其底层原理——并发扫描究竟是如何工作的,以及 Go 如何使用 goroutines 和 channels 高效处理数以千计的 TCP 连接。 ## 技术栈 | 组件 | 技术 | 备注 | |---|---|---| | 语言 | Go 1.24+ | 纯标准库,无外部依赖 | | CLI flags | `flag` | 主机、端口范围、`-workers`、`-timeout` | | TCP 拨号 | `net` | 使用 `net.Dialer.DialContext` 进行逐端口连接尝试 | | 并发 | goroutines + channels | 带有 `-workers` 限制的 worker pool | | 取消/超时 | `context` | `context.WithTimeout`(针对单个端口)、`signal.NotifyContext`(Ctrl+C) | | 日志 | `log/slog` | JSON handler,结构化字段(主机、端口、状态、持续时间) | | 指标 | `net/http` | 手动编写的 Prometheus 文本展示格式 | | 测试 | `testing` + `net.Listener` | 表驱动测试,不依赖 `scanme.nmap.org` | | 代码检查/安全 | `golangci-lint`、`govulncheck`、`gosec` | 通过 `go.mod` 中的 `go tool` 指令进行集成 | | 任务执行器 | Justfile | `build`、`test`、`lint`、`security`、`check` | ## 路线图 请查看 [ROADMAP.md](ROADMAP.md) 了解分阶段的构建计划和扩展想法。 ## 目录结构 暂不可用 ## 安装说明 暂不可用 ## 运行方式 暂不可用 ## 许可证 MIT 许可证——请参阅 [LICENSE](LICENSE)
标签:Go语言, 插件系统, 数据统计, 日志审计, 程序破解, 端口扫描, 网络工具, 网络编程