diff --git a/discovery/listener.go b/discovery/listener.go new file mode 100644 index 0000000..f568275 --- /dev/null +++ b/discovery/listener.go @@ -0,0 +1,40 @@ +package discovery + +import ( + "context" + "net" + + "github.com/bboozzoo/mconnect/logger" +) + +type Listener struct { + conn *net.UDPConn +} + +func NewListener() (*Listener, error) { + addr := net.UDPAddr{ + Port: 1714, + } + conn, err := net.ListenUDP("udp", &addr) + if err != nil { + return nil, err + } + + listener := &Listener{ + conn: conn, + } + + return listener, nil +} + +func (l *Listener) Receive(ctx context.Context) { + log := logger.FromContext(ctx) + buf := make([]byte, 4096) + count, addr, err := l.conn.ReadFromUDP(buf) + if err != nil { + log.Printf("listen failed: %v", err) + } + + log.Printf("got %v bytes from %v", count, addr) + log.Printf("data:\n%s", string(buf)) +}