54 lines
874 B
Go
54 lines
874 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"net"
|
|
"time"
|
|
)
|
|
|
|
var (
|
|
concurrency int
|
|
saddr string
|
|
)
|
|
|
|
func init() {
|
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
|
|
|
flag.StringVar(&saddr, "S", ":18080", "server address")
|
|
flag.IntVar(&concurrency, "c", 1, "Number of multiple echo to make at a time")
|
|
flag.Parse()
|
|
}
|
|
|
|
func main() {
|
|
for i := 0; i < concurrency; i++ {
|
|
go udpEchoLoop()
|
|
}
|
|
select {}
|
|
}
|
|
|
|
func udpEchoLoop() {
|
|
addr, err := net.ResolveUDPAddr("udp", saddr)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
conn, err := net.DialUDP("udp", nil, addr)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
msg := []byte(`abcdefghijklmnopqrstuvwxyz`)
|
|
for {
|
|
if _, err := conn.Write(msg); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
b := make([]byte, 1024)
|
|
_, err := conn.Read(b)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
// log.Println(string(b[:n]))
|
|
time.Sleep(100 * time.Millisecond)
|
|
}
|
|
}
|