type
status
date
slug
summary
tags
category
icon
password
参考google出的文章代码。
https://learnku.com/articles/76670基础版本
- net.Dial("tcp", address)
连接指定的 TCP 地址。如果连接成功,该函数会成功建立连接并返回一个非空的
conn(连接对象),同时err的值为nil。如果连接失败,则返回一个非空的err,表示连接无法建立。- netip := net.ParseIP(ip)
将字符串形式的IP地址(变量
ip)解析为net.IP类型的对象(变量netip)。net.IP是Go语言中表示IP地址的数据类型,而net.ParseIP()则用于从字符串解析并创建一个对应的IP对象。如果解析成功,netip将包含解析得到的IP地址,如果解析失败,则netip为nil。- start := time.Now() // 获取当前时间 cost := time.Since(start) // 自start开始至此行代码运行的时间
这俩行代码计算扫描时间
以下代码扫描127.0.0.1:1-10000端口用于测试:
花费1.5秒


使用goroutine(并发)
用一个小脚本解释这种并发,看内部注释即可
go func(n int) {}(num) 表示创建一个匿名的goroutine,并且在goroutine内部执行一个函数。将变量 num 传递给匿名函数,也就是定义的n值。使用并发的脚本:
花费946.9456ms

使用goroutine和单通道channel
这个脚本通过控制
带缓冲通道 的数量控制并发的速度,相比于上一个脚本更加的灵活一般来说,这个值越大,程序越快。
代码都是基础,通读一遍懂逻辑即可。
