1package main 2 3import ( 4 "fmt" 5 "io" 6 "log" 7 "net/http" 8 "flag" 9 "strings" 10 "time" 11) 12 13var url = flag.String("url", "", "target server") 14var count = flag.Int("n", 128, "loop count") 15func main() { 16 flag.Parse() 17 if *url == "" { 18 log.Fatal("server empty") 19 } 20 ss := make(map[string]int) 21 tr := http.Transport{ DisableKeepAlives: true } 22 for i:=0; i<*count; i++ { 23 c := http.Client{Timeout: time.Second, Transport: &tr} 24 res, err := c.Get(*url) 25 if err != nil { 26 log.Fatal(err) 27 } 28 body, err := io.ReadAll(res.Body) 29 res.Body.Close() 30 if res.StatusCode !=200 { 31 log.Fatalf("Response failed with status code: %d and\nbody: %s\n", res.StatusCode, body) 32 } 33 if err != nil { 34 log.Fatal(err) 35 } 36 ss[strings.Trim(string(body), " \r\t\n")]+=1 37 c.CloseIdleConnections() 38 } 39 for s, c := range(ss) { 40 fmt.Println(s, c) 41 } 42} 43