Se l'applicazione viene eseguito dall'utente (ad esempio, fare doppio clic nel Finder), qualsiasi tentativo da parte vostra applicazione per creare un ascoltatore presa chiederà all'utente di consentire/negare che ascoltatore - e successivamente regolare le impostazioni del firewall di conseguenza - senza alcun intervento programmatico da parte della vostra applicazione.
Se il firewall in questione è il router (un problema che ho dovuto affrontare di recente), sono disponibili alcune opzioni. L'opzione migliore supportata è Bonjour/mDNSResponder (a condizione che non si desideri supportare una situazione di doppio carattere). Apple fornisce un'applicazione wrapper di Objective-C in tutto il dns_sd.h piuttosto ottusa:
http://developer.apple.com/library/mac/#samplecode/PortMapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007879-Intro-DontLinkElementID_2
andare via 3a parte, uno sguardo a TCM Port Mapper. Usa alcune funzionalità deprecate e richiederà un po 'di sforzo per farlo funzionare con il supporto ARC (se è importante per te).
http://code.google.com/p/tcmportmapper/
Sia supporto UPnP e NAT-PMP.
Infine, se l'applicazione è in esecuzione come demone (senza un'interfaccia utente), è necessario conoscere ipfw. Preparati. Google per "ipfw os x". StackOverflow mi impedisce di pubblicare più di due link. Brillante.
Spero che questo aiuti ....
Che cosa succede se il firewall è su un router? I tuoi utenti dovranno solo gestire il firewall da soli. –