get the default broadcast network address.
This commit is contained in:
+33
@@ -0,0 +1,33 @@
|
||||
#lang racket/base
|
||||
|
||||
;; Network helpers used by UPnP and SSDP.
|
||||
|
||||
(require racket/udp
|
||||
simple-log)
|
||||
|
||||
(provide upnp-default-ipv4-address)
|
||||
|
||||
(sl-def-log upnp-network)
|
||||
|
||||
(define ssdp-multicast-address "239.255.255.250")
|
||||
(define ssdp-multicast-port 1900)
|
||||
|
||||
;; Return the local IPv4 address selected by the operating system for traffic
|
||||
;; to the SSDP multicast destination. No datagram is transmitted.
|
||||
(define (upnp-default-ipv4-address)
|
||||
(let ([socket (udp-open-socket ssdp-multicast-address
|
||||
ssdp-multicast-port)])
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
(udp-connect! socket ssdp-multicast-address ssdp-multicast-port)
|
||||
(define-values (local-address local-port remote-address remote-port)
|
||||
(udp-addresses socket #t))
|
||||
(dbg-upnp-network
|
||||
"Selected UPnP IPv4 address ~a for SSDP destination ~a:~a"
|
||||
local-address
|
||||
ssdp-multicast-address
|
||||
ssdp-multicast-port)
|
||||
local-address)
|
||||
(lambda ()
|
||||
(udp-close socket)))))
|
||||
Reference in New Issue
Block a user