2012-02-14 16 views
6

Actualmente estoy trabajando en una aplicación multiplataforma (Win/OSX/iOS) que tiene un back end C++ (con Boost). En iOS y OSX estoy usando las funciones de delegado del navegador de servicio de Cocoa Net para descubrir un dispositivo integrado a través de mDNS, y luego paso la información al back-end para crear los objetos que necesita para comunicarme con él.Bonjour/DNS-SD en Windows

Quería tomar un enfoque similar con mi interfaz de usuario de Windows MFC y encontré el artículo this que parecía hacer exactamente lo que quería. Sin embargo, parece que usar Bonjour SDK tiene algunos efectos secundarios realmente desagradables, lo que te obliga a tener un enlace estático con MFC y en mi caso la única forma de lograr que se vincule correctamente es no usar DLL de depuración, lo cual no es ideal. .

Por lo tanto, el SDK de Bonjour no es realmente bueno para mí porque impone demasiadas restricciones en mi proyecto. Con Cocoa, estoy usando muy poca funcionalidad, solo didFindService y netServiceDidResolveAddress realmente. Todo lo que quiero hacer es encontrar los dispositivos de un tipo determinado y obtener sus direcciones IP.

¿Alguien puede sugerir otra forma de evitar esto que funcionará con una interfaz MFC en Windows?

Respuesta

8

De lo que he podido reunir al investigar sobre este tema, simplemente vaya a http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-333.10/ y tome la fuente. Hay un archivo de proyecto de VC que te permitirá construir el dll como quieras.

+0

Gracias, eso es más o menos lo que terminé haciendo. Construí el archivo DLL desde el código fuente y lo vinculé a él en lugar de a la DLL del sistema. No es ideal porque tendré que enviar mi DLL compilada con el producto, pero evita tener que asegurarme de que Bonjour ya está instalado. Es una verdadera lástima, esto es muy sencillo en OSX e iOS. – Redeye

+0

Espero que las cosas mejoren en los próximos 6 meses más o menos. Parece que Apple es una herramienta para hacer que iTunes sea menos Frankenstein y extraer código para sincronizar, etc. y empujar a iCloud. ¿Cuál debería ser un código de limpieza, con suerte. –

+2

Tenga en cuenta que los archivos tar están disponibles aquí: http://www.opensource.apple.com/tarballs/mDNSResponder/ – Patrick