2012-02-14 12 views
6

Attualmente sto lavorando a un'applicazione multipiattaforma (Win/OSX/iOS) che ha un back-end C++ (con Boost). Su iOS e OSX sto utilizzando le funzioni Delega del browser del servizio Cocoa Net per scoprire un dispositivo incorporato tramite mDNS, quindi passare le informazioni al back-end per creare gli oggetti di cui ha bisogno per comunicare con esso.Bonjour/DNS-SD su Windows

Ho voluto adottare un approccio simile con il mio front-end MFC Windows e ho trovato l'articolo this che sembrava fare esattamente quello che volevo. Tuttavia, sembra che l'uso dell'SDK Bonjour abbia alcuni effetti collaterali molto spiacevoli, obbligandoti a un collegamento statico a MFC e nel mio caso l'unico modo in cui riesco a collegarlo correttamente è di non usare affatto le DLL di debug, che non è l'ideale .

Quindi, l'SDK di Bonjour non è un granché per me perché impone troppe restrizioni al mio progetto. Con Cocoa in realtà sto usando pochissime funzionalità - ho fatto proprio FindService e netServiceDidResolveAddress. Tutto quello che voglio fare è trovare i dispositivi di un determinato tipo e ottenere i loro indirizzi IP.

Qualcuno può suggerire un altro modo per risolvere questo problema con un front-end MFC su Windows?

risposta

8

Da ciò che ho potuto ricavare dalla ricerca di questo argomento è sufficiente andare al numero http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-333.10/ e prendere il codice sorgente. C'è un file di progetto VC che ti permetterà di costruire la dll come vuoi.

+0

Grazie, è praticamente quello che ho finito per fare. Ho costruito la DLL dall'origine e collegata a quella invece della DLL di sistema. Non è l'ideale perché dovrò spedire la mia DLL compilata con il prodotto, ma evita di dover essere sicuro che Bonjour sia già installato. È un vero peccato - questo è così semplice su OSX e iOS. – Redeye

+0

Mi aspetterei che le cose migliorino nei prossimi 6 mesi circa. Sembra che Apple stia lavorando per rendere iTunes meno un Frankenstein e estraendo il codice per sincronizzare ecc. E spingere su iCloud. Quale dovrebbe essere un codice di pulizia, si spera. –

+2

Nota che i tarball sono disponibili qui: http://www.opensource.apple.com/tarballs/mDNSResponder/ – Patrick