TCP掃描埠
阿新 • • 發佈:2021-06-17
1.非併發
package main import ( "fmt" "net" ) func main() { for i := 21; i < 120; i++ { address := fmt.Sprintf("192.168.90.1:%d", i) conn, err := net.Dial("tcp", address) if err != nil { fmt.Printf("%s 關閉了 \n", address) continue } conn.Close() fmt.Printf("%s 打開了!!!\n", address) } }
結果:
2.併發
package main import ( "fmt" "net" "sync" "time" ) func main() { start := time.Now() var wg sync.WaitGroup //計數器 for i := 21; i < 120; i++ { wg.Add(1) //加一 //每次迴圈建立一個 go func go func(j int) { defer wg.Done()//減1 address := fmt.Sprintf("192.168.90.1:%d", j) conn, err := net.Dial("tcp", address) if err != nil { fmt.Printf("%s 關閉了 \n", address) return } conn.Close() fmt.Printf("%s 打開了!!!\n", address) }(i) } wg.Wait()//直到wg計數器位0放行 elapse := time.Since(start) / 1e9 //執行時長 fmt.Printf("\n %d second:", elapse) }
結果:
感謝:https://www.bilibili.com/video/BV13K4y1a7dt?p=3