好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > go實現fping功能

go實現fping功能

熱門標簽:利用地圖標注位置 江蘇呼叫中心外呼系統有效果嗎 赤峰電銷 官渡電銷外呼管理系統怎么收費 谷歌美發店地圖標注 貴州電話智能外呼系統 地圖區域圖標注后導出 杭州人工智能電銷機器人費用 400開頭電話怎樣申請

1、什么是fping

fping 是一個類似 ping 的程序,與 ping 不同的是你可以同時指定多個要 ping 的目標。
fping 發送完 ping 包后不等待回應,而是繼續下一個目標

3、具體實現

1.獲取IP段

// IP段
'1', '2020-11-26 17:11:39.515', '2020-11-26 17:11:39.515', '1.0.1.0', '1.0.3.255', '福建', '電信'
'2', '2020-11-26 17:11:43.553', '2020-11-26 17:11:43.553', '1.0.8.0', '1.0.15.255', '廣東', '電信'
'3', '2020-11-26 17:11:47.563', '2020-11-26 17:11:47.563', '1.0.32.0', '1.0.63.255', '廣東', '電信'
'4', '2020-11-26 17:11:53.621', '2020-11-26 17:11:53.621', '1.1.0.0', '1.1.0.255', '福建', '電信'
'5', '2020-11-26 17:11:57.635', '2020-11-26 17:11:57.635', '1.1.2.0', '1.1.7.255', '福建', '電信'
'6', '2020-11-26 17:11:59.642', '2020-11-26 17:11:59.642', '1.1.8.0', '1.1.63.255', '廣東', '電信'
'7', '2020-11-26 17:12:05.671', '2020-11-26 17:12:05.671', '1.2.0.0', '1.2.1.255', '福建', '電信'
'8', '2020-11-26 17:12:07.674', '2020-11-26 17:12:07.674', '1.2.2.0', '1.2.2.255', '北京', '聯通'
'9', '2020-11-26 17:12:13.690', '2020-11-26 17:12:13.690', '1.2.5.0', '1.2.7.255', '北京', '電信'

2.ping方法(單個,多個已給出)

// 單個ping
// IsAlivePing : 檢測目標IP是否能夠ping通,target為目標IP
func IsAlivePing(target string) (bool, error) {
 pinger, err := ping.NewPinger(target)
 if err != nil {
 return false, err
 }
 pinger.Count = 10
 PINGTIME := time.Duration(1000)
 pinger.Timeout = time.Duration(PINGTIME * time.Millisecond)
 pinger.SetPrivileged(true) // 選擇icmp,不選擇udp
 pinger.Run()
 stats := pinger.Statistics()
 // 判斷是否有接收到的包
 if stats.PacketsRecv >= 1 {
 return true, nil
 }
 return false, nil
}

// 多個ping:得到死IP
// FilterActiveIPs : 過濾活IP,篩選出死IP
func FilterActiveIPs(ips []string) (inactiveIPs []string) {
 var lock sync.Mutex
 var wg sync.WaitGroup
 wg.Add(len(ips))
 for _, ip := range ips {
 go func(ip string) {
 defer wg.Done()
 // 判斷是死ip,并且格式正確
 isAlive, err := IsAlivePing(ip)
 if !isAlive  err == nil {
 RandomSleep(2) // 睡眠[1,2]秒,二次確認是否為死IP
 if isAlive, _ := IsAlivePing(ip); !isAlive {
  RandomSleep(2) // 再睡眠[1,2]秒,三次確認是否為死IP
  if isAlive, _ := IsAlivePing(ip); !isAlive {
  lock.Lock()
  defer lock.Unlock()
  inactiveIPs = append(inactiveIPs, ip)
  }
 }
 }
 }(ip)
 }
 wg.Wait()
 return inactiveIPs
}

// 多個ping:得到活IP
// FilterInactiveIPs : 過濾死IP,篩選出活IP
func FilterInactiveIPs(ips []string) (activeIPs []string) {
 var lock sync.Mutex
 var wg sync.WaitGroup
 wg.Add(len(ips))
 for _, ip := range ips {
 go func(ip string) {
 defer wg.Done()
 // 判斷是活ip,并且格式正確
 if isAlive, err := IsAlivePing(ip); isAlive  err == nil {
 lock.Lock()
 defer lock.Unlock()
 activeIPs = append(activeIPs, ip)
 }
 }(ip)
 }
 wg.Wait()
 return activeIPs
}

// RandomSleep : 隨機睡眠[1,t]秒
func RandomSleep(t int) {
 rand.Seed(time.Now().UnixNano())
 r := time.Duration(rand.Intn(t) + 1)
 time.Sleep(r * time.Second)
}

3.分解IP段

// Separation : 分解IP段
func (i *impl) Separation(minIP, maxIP string) []string {
	shouldStrs := make([]string, 0) // 這是IP段的所有IP
	// for i := 0; i  l; i = i + 2 {
	min, _ := IPString2Long(minIP) // 這里有一個轉化,我默認給的是正確的IP,如果兄弟們不確定傳入的IP格式是否正確,那么要判斷err
	max, _ := IPString2Long(maxIP)
	for min = max {
		minIPstr, _ := Long2IPString(min)
		xxxip := net.ParseIP(minIPstr).To4()
		if xxxip[3] != 0  xxxip[3] != 255 { // 兄弟們,這個判斷取決于你們想不想要兩個端點
			shouldStrs = append(shouldStrs, minIPstr)
		}
		min++
	}

 // TODO: 兄弟們,可以把這句刪除了
	fmt.Printf("IP段%s--%s不包括兩端的長度: %d\n", minIP, maxIP, len(shouldStrs))
	return shouldStrs
}

// Long2IPString 把數值轉為ip字符串
func Long2IPString(i uint) (string, error) {
	if i > math.MaxUint32 {
		return "", errors.New("beyond the scope of ipv4")
	}

	ip := make(net.IP, net.IPv4len)
	ip[0] = byte(i >> 24)
	ip[1] = byte(i >> 16)
	ip[2] = byte(i >> 8)
	ip[3] = byte(i)

	return ip.String(), nil
}

// IPString2Long 把ip字符串轉為數值
func IPString2Long(ip string) (uint, error) {
	b := net.ParseIP(ip).To4()
	if b == nil {
		return 0, errors.New("invalid ipv4 format")
	}

	return uint(b[3]) | uint(b[2])8 | uint(b[1])16 | uint(b[0])24, nil
}

到此這篇關于go實現fping功能的文章就介紹到這了,更多相關go實現fping內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang并發ping主機的方法
  • 利用Python腳本實現ping百度和google的方法
  • 利用Go語言實現簡單Ping過程的方法
  • python使用xmlrpclib模塊實現對百度google的ping功能

標簽:鷹潭 黔西 宜春 泰安 武漢 保定 河池 松原

巨人網絡通訊聲明:本文標題《go實現fping功能》,本文關鍵詞  實現,fping,功能,實現,fping,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go實現fping功能》相關的同類信息!
  • 本頁收集關于go實現fping功能的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 我的性老师韩国在线观看| 边添边摸边做边爱的视频| 99热在线只有精品| 女澡堂洗澡偷拍XXX| 很黄很色的波波视频| 韩国三级在线观看网站| 继夫亲生乖女好紧H第| 亚洲伊人久久综合影院2021| ?爆乳女神?极品白皙爆| 农村野外一级AAA片| 免费avapp下载| leneandersen极品白嫩美乳妞| 日韩精品久久人妻无码软件 | 男女性情视频| 快穿c各种受肉大总攻H| 国产老色鬼无码免费视频| 国产伦精品一区二区三区视频新| 粗大挺进闺蜜的幽深处h| 中文字幕精品一区二区三区电影| 黑莲花攻略手册.| 浪花直播app下| 乡村乱肉第21部全文阅读| 销魂老女人老泬| 德国婬片A片AAA毛片| 欧美日韩国产在线人成dvd| 绳艺捆绑紧缚美女调教| 午夜丰满极品美女A片| 成人免费在线视频| 《内衣办公室》日本动漫| 主人啊~用力cao我cao烂我| blued在线观看视频高清| 韩国高清色www在线播放| 麻豆秘?AV视频在线播放| 阜平县| 日本和搜子同屋的日子a | 爱爱色| 伊人一级| 国产freexxxx性播放| 91香蕉污| 免费爱豆传媒在线观看视频| 强揉爆乳女教师2|