package vbantxt import ( "fmt" "net" log "github.com/sirupsen/logrus" ) // udpConn represents the UDP client type udpConn struct { conn *net.UDPConn } // newUDPConn returns a UDP client func newUDPConn(host string, port int) (udpConn, error) { udpAddr, err := net.ResolveUDPAddr("udp4", fmt.Sprintf("%s:%d", host, port)) if err != nil { return udpConn{}, err } conn, err := net.DialUDP("udp4", nil, udpAddr) if err != nil { return udpConn{}, err } log.Infof("Outgoing address %s", conn.RemoteAddr()) return udpConn{conn: conn}, nil } // Write implements the io.WriteCloser interface func (u udpConn) Write(buf []byte) (int, error) { n, err := u.conn.Write(buf) if err != nil { return 0, err } log.Debugf("Sending '%s' to: %s", string(buf), u.conn.RemoteAddr()) return n, nil } // Close implements the io.WriteCloser interface func (u udpConn) Close() error { err := u.conn.Close() if err != nil { return err } return nil }