github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/BlackHatGo/Chap02/tcp-sync-scanner/tcp-sync-scanner.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  	"sync"
     7  )
     8  
     9  func worker(ports chan int, wg * sync.WaitGroup) {
    10  	for p := range ports {
    11  		fmt.Println(p)
    12  	}
    13  }
    14  
    15  func main() {
    16  	ports := make(chan int, 100)
    17  	var wg sync.WaitGroup
    18  
    19  	for i := 0; i < cap(ports); i++ {
    20  		go worker(ports, &wg)
    21  	}
    22  
    23  	for i := 1; i <= 1024; i++ {
    24  		wg.Add(1)
    25  		ports <- i
    26  	}
    27  
    28  	wg.Wait()
    29  	close(ports)
    30  }