Launchd Multicast Socket Listener

1

No estoy seguro de haber omitido alguna documentación o no, pero me resulta difícil descubrir cómo configurar un agente launchd que se puede activar cada vez que se recibe un datagrama dentro de una multidifusión grupo.

Lo que me gustaría saber es cómo debería ser un launchd plist para proporcionar un simple escucha de datagramas que esté vinculado a un grupo de multidifusión.

Esto es lo que he estado intentando:

<?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>

Pero solo genera getaddrinfo errores ("nombre de nodo ni nombre de servidor proporcionado, o no se conoce"). La eliminación del grupo de multidifusión para simplemente configurar un puerto UDP parece funcionar bien, pero realmente no quiero tener que codificar una dirección IP o DNS local.

¿Hay buenos ejemplos de cómo crear un demonio o agente de inicio de escucha de multidifusión utilizando launchd ? ¿O me estoy perdiendo algún otro paso, o mal entiendo qué datos debo ingresar para un grupo de multidifusión?

    
pregunta Haravikk 13.06.2014 - 16:24

1 respuesta

1

Configuro este utilizando LaunchControl .

<?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>Sock1</key>
        <dict>
            <key>MulticastGroup</key>
            <string>224.0.0.253</string>
            <key>SockFamily</key>
            <string>IPv4</string>
            <key>SockProtocol</key>
            <string>UDP</string>
            <key>SockServiceName</key>
            <string>12345</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
    <key>inetdCompatibility</key>
    <dict>
        <key>Wait</key>
        <true/>
    </dict>
</dict>
</plist>
    
respondido por el tron_jones 08.10.2014 - 02:44

Lea otras preguntas en las etiquetas