commit 42fd3bfbbeebb8ca9817fffedcf1264126c050f4 Author: SDM Date: Tue Feb 5 14:37:12 2019 +0300 Add maid.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e35eec7 --- /dev/null +++ b/go.mod @@ -0,0 +1 @@ +module goudpserver diff --git a/main.go b/main.go new file mode 100644 index 0000000..1fb2df5 --- /dev/null +++ b/main.go @@ -0,0 +1,51 @@ +// go build -ldflags "-s -w" +// goudpserver -ip=0.0.0.0 -port=10003 +// ncat -u localhost 10003 + +package main + +import ( + "flag" + "fmt" + "net" + "runtime" +) + +func lstn(connection *net.UDPConn, alarm chan struct{}) { + buffer := make([]byte, 1024) + n, remoteAddr, err := 0, new(net.UDPAddr), error(nil) + for err == nil { + n, remoteAddr, err = connection.ReadFromUDP(buffer) + fmt.Println("from", remoteAddr, "-", buffer[:n]) + } + + fmt.Println("Listener failed (", err, ")!") + alarm <- struct{}{} +} + +func main() { + argIP := flag.String("ip", "0.0.0.0", "Listen IP address") + argPort := flag.Int("port", 10003, "Listen Port number") + flag.Parse() + + fmt.Println("IP Address: ", *argIP) + fmt.Println("Port Number: ", *argPort) + + addr := net.UDPAddr{ + Port: *argPort, + // IP: net.IP{0, 0, 0, 0}, + IP: net.ParseIP(*argIP), + } + connection, err := net.ListenUDP("udp", &addr) + if err != nil { + panic(err) + } + alarm := make(chan struct{}) + fmt.Println("CPU Threads: ", runtime.NumCPU()) + for i := 0; i < runtime.NumCPU(); i++ { + go lstn(connection, alarm) + } + + msg := <-alarm + fmt.Println(msg) +}