代码拉取完成,页面将自动刷新
package go_ping
import (
"gitee.com/liumou_site/logger"
"sync"
)
// NewConcurrency 初始化并返回一个 Concurrency 实例,该实例用于并发地对多个IP地址进行ping操作。
// ips: 待检查的IP地址列表。
// 返回值: 一个 Concurrency 实例,包含了IP地址列表、结果通道、等待组等用于并发操作的字段。
func NewConcurrency(ips []string) *Concurrency {
// 检查输入的IP地址列表是否为空
if len(ips) == 0 {
logger.Error("ips is nil")
// 如果为空,则返回一个空的Concurrency实例
return &Concurrency{}
}
// 过滤ips列表,剔除非IP地址的字符串
// 剔除非ip
ips = FilterIP(ips)
// 创建一个字符串通道,用于接收ping操作的结果
// 初始化
// 创建一个缓冲通道,用于接收ping的结果
ch := make(chan string, len(ips))
// 初始化一个等待组,用于并发操作结束后进行聚合
var wg sync.WaitGroup
// 返回一个初始化好的Concurrency实例
return &Concurrency{
Addr: ips,
Res: sync.Map{},
Result: make(map[string]bool),
Ch: ch,
Wg: &wg,
Total: 0,
Success: 0,
Fail: 0,
Err: nil,
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。