socket-receive blocks my repl pasted by klm` on Fri Jun 14 15:01:26 2013



(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 ()
                 (begin
                   (display "receiving ...")
                   (print (socket-receive *server-socket* 1024))
                   (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)

no title added by rivo on Fri Jun 14 15:27:20 2013

(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)