(use socket) ;; TODO: clean this up (define *server-socket* #f) (begin (set! *server-socket* (socket af/inet sock/dgram ipproto/udp)) (set! (so-reuse-address? *server-socket*) #t) (socket-bind *server-socket* (inet-address "0.0.0.0" 5055)) ;; join multicast group to receive broadcasts ;; (udp-join-multicast-group *server-socket* #f "239.255.255.250" #t) *server-socket*) ;; repl this to read packets from server (if (socket-receive-ready? *server-socket*) (socket-receive *server-socket* 1024)) (thread-start! (lambda () (display "receiving ...") (let loop () (if (socket-receive-ready? *server-socket*) (socket-receive-from *server-socket* 1024) (loop))) (print "done"))) ;; (socket-close *server-socket*) ;; to send a packet: ;; $ echo test `date` | socat - UDP-DATAGRAM:10.0.0.255:5055,broadcast (print "repl is blocked, but this is printed!") (repl)