Non sono sicuro di aver perso qualche documentazione o no, ma sto facendo fatica a capire come impostare un agente launchd
che può essere attivato ogni volta che un datagramma viene ricevuto all'interno di un multicast gruppo.
Quello che mi piacerebbe sapere è come dovrebbe apparire un launchd
plist per fornire un semplice listener di datagrammi associato a un gruppo multicast.
Ecco cosa ho provato:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>foo.bar</string>
<key>Program</key>
<string>/foo/bar</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockType</key>
<string>dgram</string>
<key>SockServiceName</key>
<string>12345</string>
<key>SockFamily</key>
<string>IPv4</string>
<key>MulticastSocket</key>
<string>224.0.0.253</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>
Ma genera solo% errori digetaddrinfo
("nomenodo e nomeserver forniti o non noti"). La rimozione del gruppo multicast per l'installazione di una porta UDP sembra funzionare correttamente, ma in realtà non voglio dover codificare un indirizzo IP o un DNS locale.
Esistono buoni esempi di come creare un agente di lancio o un demone di ascolto multicast utilizzando launchd
? Oppure mi manca qualche altro passaggio o frainteso quali dati dovrei inserire per un gruppo multicast?