You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
797B

  1. (import scheme)
  2. (import (chicken base))
  3. (import srfi-1)
  4. (import srfi-13)
  5. (import socket)
  6. (import (chicken process-context))
  7. (define broadcast-socket #f)
  8. (define bind-address (inet-address "0.0.0.0" #f))
  9. (define broadcast-address (inet-address "255.255.255.255" 3742))
  10. (define (broadcast-setup)
  11. (set! broadcast-socket (socket af/inet sock/dgram))
  12. (set! (so-broadcast? broadcast-socket) #t)
  13. (socket-bind broadcast-socket bind-address))
  14. (define (broadcast-send str)
  15. (socket-send-to broadcast-socket str broadcast-address))
  16. (define (main)
  17. (let ((args (drop (argv) 1)))
  18. (if (null? args)
  19. (begin (display "usage: net-notify <message>")
  20. (newline))
  21. (begin (broadcast-setup)
  22. (broadcast-send (string-concatenate (intersperse (cons "net-notify:" args) " ")))))))
  23. (main)