feat: Initial revision

This commit is contained in:
Adrian Rumpold
2022-07-04 06:51:34 +02:00
commit 0054a2d9ae
13 changed files with 468 additions and 0 deletions

43
pkg/net/server.go Normal file
View File

@@ -0,0 +1,43 @@
package net
import (
"net"
"github.com/AdrianoKF/go-clip/internal/util"
)
type Server struct {
addr net.UDPAddr
Handler HandlerFunc
}
func NewServer(addr net.UDPAddr, handler HandlerFunc) *Server {
instance := &Server{
addr,
handler,
}
return instance
}
func (s Server) Listen() {
conn, err := net.ListenMulticastUDP("udp4", nil, &s.addr)
if err != nil {
util.Logger.Error("Error listening on UDP", err)
return
}
defer conn.Close()
buf := make([]byte, maxDatagramSize)
for {
n, addr, err := conn.ReadFromUDP(buf)
if err != nil {
util.Logger.Error("Error reading from UDP", err)
return
}
util.Logger.Info("Received UDP packet from ", addr, " with ", n, " bytes")
if s.Handler != nil {
go s.Handler(addr, n, buf)
}
}
}