package main

import (
	"fmt"
	"log"
	"net"
	"os"
	"strconv"
	"sync"
)

func main() {
	data := []byte("Hello")

	var count int
	m := new(sync.Mutex)
	wg := new(sync.WaitGroup)

	times, _ := strconv.Atoi(os.Args[1])

	wg.Add(times)
	for i := 0; i < times; i++ {

		go func() {
			defer wg.Done()

			conn, err := net.Dial("tcp", ":8080")
			if err != nil {
				log.Println(err)
			}
			n, err := conn.Write(data)
			if err != nil {
				log.Println(err)
			} else if n == 5 {
				m.Lock()
				count++
				m.Unlock()
			}
			tempData := make([]byte, 10)
			conn.Read(tempData)
			fmt.Println(string(tempData))
			conn.Close()
		}()
	}
	wg.Wait()

	fmt.Println(count)
}
