github.com/nginxinc/kubernetes-ingress@v1.12.5/tests/test-servers/udp/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "net" 8 "os" 9 ) 10 11 func main() { 12 ip := os.Getenv("POD_IP") 13 log.Printf("ip: %v\n", ip) 14 if ip == "" { 15 log.Fatalf("missing required env var: POD_IP") 16 } 17 port := flag.String("port", "3334", "The port the server listens to") 18 flag.Parse() 19 listener, err := net.ListenPacket("udp", fmt.Sprintf(":%v", *port)) 20 if err != nil { 21 log.Panicln(err) 22 } 23 defer listener.Close() 24 log.Printf("listening to udp connections at: :%v", *port) 25 buffer := make([]byte, 1024) 26 for { 27 n, addr, err := listener.ReadFrom(buffer) 28 if err != nil { 29 log.Panicln(err) 30 } 31 32 request := string(buffer[:n]) 33 34 log.Printf("packet-received: request=%q bytes=%d from=%s", request, n, addr.String()) 35 36 response := fmt.Sprintf("%v:%v", ip, *port) 37 if request == "health" { 38 response = "healthy" 39 } 40 41 log.Printf("write data to connection: %q", response) 42 n, err = listener.WriteTo([]byte(response), addr) 43 if err != nil { 44 log.Panicln(err) 45 } 46 log.Printf("packet-written: bytes=%d to=%s", n, addr.String()) 47 } 48 }