func writeUDP(ft *natty.FiveTuple) { local, remote, err := ft.UDPAddrs() if err != nil { log.Fatalf("Unable to resolve UDP addresses: %s", err) } conn, err := net.DialUDP("udp", local, remote) if err != nil { log.Fatalf("Unable to dial UDP: %s", err) } for { msg := fmt.Sprintf("Hello from %s to %s", ft.Local, ft.Remote) log.Printf("Sending UDP message: %s", msg) _, err := conn.Write([]byte(msg)) if err != nil { log.Fatalf("Offerer unable to write to UDP: %s", err) } time.Sleep(1 * time.Second) } }
func readUDP(peerId waddell.PeerId, traversalId uint32, ft *natty.FiveTuple) { local, _, err := ft.UDPAddrs() if err != nil { log.Fatalf("Unable to resolve UDP addresses: %s", err) } conn, err := net.ListenUDP("udp", local) if err != nil { log.Fatalf("Unable to listen on UDP: %s", err) } log.Printf("Listening for UDP packets at: %s", local) notifyClientOfServerReady(peerId, traversalId) b := make([]byte, 1024) for { n, addr, err := conn.ReadFrom(b) if err != nil { log.Fatalf("Unable to read from UDP: %s", err) } msg := string(b[:n]) log.Printf("Got UDP message from %s: '%s'", addr, msg) } }