2009-12-16 21 views
12

मेरे पास कुछ ऐप्स हैं जिन्हें मैं ज़ीरोकॉन्फ़ के साथ दिखाना चाहता हूं।ज़ीरोकॉन्फ़/बोनजोर पर प्रकाशित करने का सबसे आसान तरीका?

  1. क्या ऐसा करने का कोई आसान तरीका है?
  2. क्या ऐसा कुछ भी है जो इसे सक्षम करने के लिए मेरे नेटवर्क व्यवस्थापक द्वारा किया जाना चाहिए?

पायथन या sh प्राथमिकता होगी। ओएस-विशिष्ट सुझाव लिनक्स और ओएस एक्स के लिए आपका स्वागत है।

उत्तर

9

या फिर आप बैश उपयोग कर सकते हैं ।

+0

"आसान कामकाज" अब उपलब्ध नहीं है – bjoernz

+0

@bjoernz मैंने लिंकर को प्रतिबिंबित करने के लिए अपना जवाब अपडेट किया है। – Zack

1

Avahi Python bindings के माध्यम से, यह बहुत आसान है।

+0

कि केवल लिनक्स है:

pip install zeroconf 

यहाँ एक स्क्रिप्ट मैं एक iOS डिवाइस के लिए एक Twisted-Autobahn WebSocket घोषणा करने के लिए उपयोग करने से एक अंश है? –

+0

दुर्भाग्य से मुझे नहीं पता। – jldupont

8

मैं pybonjour की सिफारिश करता हूं। ,

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

यह अन्य * nixes के लिए ओएस एक्स पर डिफ़ॉल्ट रूप से काम करता है avahi-publish आदमी पृष्ठ का संदर्भ लें (जो आप अपनी पसंद के पैकेज प्रबंधक के माध्यम से स्थापित करने की आवश्यकता हो सकती है):

+2

अच्छा लगता है। वर्तमान में ध्यान दें [पायथन 3.x का समर्थन नहीं करता - समस्या # 5 देखें] (http://code.google.com/p/pybonjour/issues/detail?id=5)। –

+1

अंतिम रिलीज 200 9 ... –

7

पायबोज़र सक्रिय रूप से बनाए रखा प्रतीत नहीं होता है। मैं python-zeroconf का उपयोग कर रहा हूं।

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() 
संबंधित मुद्दे