2010-03-04 18 views
11

¿Es posible usar Bonjour desde la línea de comandos? Por ejemplo, si deseo registrar un servicio, escribo algo así: Bonjour -register service_name port. Y luego Bonjour asigna una IP libre para mi servicio. O, por ejemplo, si deseo ver una lista de servicios disponibles, escribo algo así como: bonjour -showServices. Y luego recibo una lista de todos los servicios disponibles con sus nombres, direcciones IP y puertos. Algo como eso existe?¿Puedo usar Bonjour desde la línea de comandos?

Estoy algo confundido por la documentación disponible. Por ejemplo here, en el principio del documento que veo:

para registrar su servicio, llame a DNSServiceRegister.

¿Dónde debería llamarlo? En la línea de comando? En Java? En C++? En python? Es un poco extraño que este tipo de contexto no se proporcione.

En general, encuentro solo una información general sobre zeroconf y Bonjour (lo que se supone que debe hacer). Pero no puedo encontrar algo concreto y simple. Como ejemplos de "Hello World" de Bonjour.

¿Alguien puede ayudarme con eso?

+0

Gracias mucho por la respuesta. Ayudan, pero todavía no obtuvo la respuesta a mi pregunta: "¿Puedo usar Bonjour desde la línea de comandos?". Max, mDNS no es para Windows (que necesito).jdizzle, dns-sd está muy cerca de lo que necesito, pero no es Bonjour, ¿verdad? ¿Puede ser que dns-sd sea utilizado por Bonjour? – Roman

+0

Encontré un ejemplo del uso de Bonjour en el mundo real desde la línea de comandos, para anunciar una impresora en otra máquina que no es compatible con mDNS. Es posible que encuentre que responde algunas de sus preguntas: http://playcontrol.net/ewing/jibberjabber/advertising_a_legacy_networ.html – Max

+0

dns-sd es una herramienta de línea de comandos para registrar/explorar anuncios bonjour. Es exactamente lo que dices que quieres, pero apuesto a que lo que realmente quieres es una bonjour API para que la use tu aplicación, que también existe. – jdizzle

Respuesta

1

Sí, ciertamente es posible. Echar un vistazo a la página del manual de mDNS

+0

Pero creo que mDNS es para Mac OS, ¿no es así? Necesito usar Windows XP. – Roman

+2

Compre el camino, ¿mDNS es parte de Bonjour? O, ¿cómo se relacionan mDNS y Bonjour? – Roman

+0

Sí, mDNS es un programa Mac OS/UNIX. mDNS es parte de Bonjour (lo que solía llamarse Rendezvous), que es la implementación de Apple de la red Zeroconf. Eche un vistazo al material de referencia en el sitio web de Apple: http://developer.apple.com/networking/bonjour/index.html. – Max

20

dns-sd es el programa de línea de comando que funciona en Windows y Mac OS X.

utilizo a menudo a acciones túnel de iTunes en internet con ssh. Mi uso típico es dns-sd -P my_music _daap._tcp. local 3690 localhost 127.0.0.1. Esto supone que he configurado un túnel ssh para escuchar en el puerto localhost 3690 al puerto 3689 del host que comparte iTunes en la red extranjera. Esto hace que un pequeño icono de compartir iTunes aparezca en iTunes llamado "my_music".

5

mDNS es una versión anterior de la herramienta dns-sd. Son ambas herramientas de línea de comandos, escritas por Apple, para interactuar con Bonjour.

Usted puede utilizar la herramienta de línea de comandos para hacer algunas cosas con Bonjour, pero citar la página del manual dns-sd:

El comando dns-sd está destinado principalmente para uso interactivo. Debido a que sus argumentos de línea de comando y formato de salida están sujetos a cambios, invocarlo desde un script de shell generalmente será frágil.

Si desea realizar operaciones de detección del servicio DNS desde un lenguaje de scripting, entonces la mejor manera de hacerlo es no ejecutar el comando dns-sd y luego intentar descifrar el resultado textual, sino llamar directamente al DNS -SD API que utiliza un enlace para el idioma elegido.

Por ejemplo, si está programando en Ruby, puede llamar directamente a las API DNS-SD utilizando el paquete dnssd documentado en http://rubyforge.org/projects/dnssd/. Enlaces similares para otros idiomas también están en desarrollo.

Por ejemplo, se le preguntó sobre "DNSServiceRegister", que es una función C:
http://developer.apple.com/library/mac/#documentation/Networking/Reference/DNSServiceDiscovery_CRef/dns_sd_h/index.html#//apple_ref/c/func/DNSServiceRegister

Cuestiones relacionadas