package main import ( "fmt" "net" "log" "sync" ) func handleConnection(conn net.Conn) { defer conn.Close() addr := conn.RemoteAddr() fmt.Println("Connect from", addr.Network(), addr.String()) // send explosion notice to dentata report, err := net.Dial("tcp","127.0.0.1:9001") if err != nil { panic(err) } defer report.Close() report.Write([]byte(addr.String())) } func listener(addr string) { server, err := net.Listen("tcp", addr) if err != nil { panic(err) } for { conn, err := server.Accept() if err != nil { log.Println("ACCEPT ERROR", err) } else { go handleConnection(conn) } } } func main() { var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Go(func () { listener(fmt.Sprintf("0.0.0.0:%d", 8000 + i)) }) } wg.Wait() }