内容目录
Golang 批量查询开放端口号
const timeout = time.Millisecond * 200
host := "127.0.0.1" // 要扫描的 IP
wg := golimit.NewGoLimit(4)
for port := 1; port <= 65535; port++ { // 遍历所有可能的端口号
address := fmt.Sprintf("%s:%d", host, port)
wg.Add() // 添加一个任务到 WaitGroup 中
go func(addr string) { // 启动一个新的协程,并尝试连接该端口
defer wg.Done() // 协程执行完毕后从 WaitGroup 中移除该任务
conn, err := net.DialTimeout("tcp", addr, timeout)
if err == nil { // 如果连接成功,则说明该端口处于打开状态
fmt.Printf("Port %s is open\n", addr)
conn.Close()}
}(address)
}
wg.Wait() // 等待所有任务完成
正文完