package workflows import ( "fmt" "net" "github.com/vmihailenco/msgpack/v5" ) type UDPPayload struct { MagicNumber int `msgpack:"magicNumber"` Data string `msgpack:"data"` } const ( BUFFER_SIZE int = 1024 MAGIC_NUMBER int = 114514 ) func ListenUDP(port string) (string, error) { addr, err := net.ResolveUDPAddr("udp", ":"+port) if err != nil { return nil, fmt.Errorf("failed to resolve address, %w", err) } conn, err := net.ListenUDP("udp", addr) if err != nil { return nil, fmt.Errorf("failed to listen on addr '%v', %w", addr, err) } defer conn.Close() for { buffer := make([]byte, BUFFER_SIZE) n, clientAddr, err := conn.ReadFromUDP(buffer) if err != nil { continue } var payload UDPPayload err = msgpack.Unmarshal(buffer[:n], &payload) if err == nil && payload.MagicNumber == MAGIC_NUMBER { return payload.Data } } } func SendPayload(endpoint, data string) error { }