From bb1b9870d8436be5534180ea2dfe1cb66ab43ff8 Mon Sep 17 00:00:00 2001 From: Maciek Borzecki Date: Sat, 20 Jan 2018 20:40:18 +0100 Subject: [PATCH] discovery: device discovery --- discovery/listener.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 discovery/listener.go 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)) +}