16

zeroconfで表示したいアプリがいくつかあります。

  1. これを行う簡単なスクリプト可能な方法はありますか?
  2. これを有効にするためにネットワーク管理者が行う必要があることはありますか?

Python または sh が望ましいでしょう。Linux および OS X に関する OS 固有の提案を歓迎します。

4

4 に答える 4

11

pybonjour は積極的にメンテナンスされていないようです。私はpython-zeroconfを使用しています。

pip install zeroconf

以下は、 Twisted-Autobahn WebSocketを iOS デバイスにアナウンスするために使用するスクリプトからの抜粋です。

from zeroconf import ServiceInfo, Zeroconf

class WebSocketManager(service.Service, object):
    ws_service_name = 'Verasonics WebSocket'
    wsPort = None
    wsInfo = None

    def __init__(self, factory, portCallback):
        factory.protocol = BroadcastServerProtocol
        self.factory = factory
        self.portCallback = portCallback
        self.zeroconf = Zeroconf()

    def privilegedStartService(self):
        self.wsPort = reactor.listenTCP(0, self.factory)
        port = self.wsPort.getHost().port

        fqdn = socket.gethostname()
        ip_addr = socket.gethostbyname(fqdn)
        hostname = fqdn.split('.')[0]

        wsDesc = {'service': 'Verasonics Frame', 'version': '1.0.0'}
        self.wsInfo = ServiceInfo('_verasonics-ws._tcp.local.',
                                  hostname + ' ' + self.ws_service_name + '._verasonics-ws._tcp.local.',
                                  socket.inet_aton(ip_addr), port, 0, 0,
                                  wsDesc, hostname + '.local.')
        self.zeroconf.register_service(self.wsInfo)
        self.portCallback(port)

        return super(WebSocketManager, self).privilegedStartService()

    def stopService(self):
        self.zeroconf.unregister_service(self.wsInfo)

        self.wsPort.stopListening()
        return super(WebSocketManager , self).stopService()
于 2016-08-10T10:19:00.210 に答える
9

または、bash を使用することもできます。

dns-sd -R <Name> <Type> <Domain> <Port> [<TXT>...]

これは、OS X ではデフォルトで動作します。その他の *nix については、avahi-publishの man ページを参照してください (お好みのパッケージ マネージャーを介してインストールする必要がある場合があります)。

于 2010-01-18T01:01:22.730 に答える
7

pybonjourをお勧めします。

于 2009-12-16T18:44:52.807 に答える
2

Avahi Python bindingsを使用すると、非常に簡単です。

于 2009-12-16T16:54:35.073 に答える