Если ваше приложение запускается пользователем (т. Е. Выполняется двойной щелчок в Finder), любая попытка вашего приложения создать прослушиватель сокетов побудит пользователя разрешить / запретить этого прослушивателя - и впоследствии отрегулировать настройки брандмауэра. соответственно - без какого-либо программного вмешательства со стороны вашего приложения.
Если рассматриваемый брандмауэр является вашим маршрутизатором (проблема, с которой мне недавно пришлось столкнуться), у вас есть несколько вариантов. Лучше всего поддерживается Bonjour / mDNSResponder (если вы не хотите поддерживать ситуацию с двойной натурой). Apple предоставляет приложение-оболочку Objective-C для довольно тупого dns_sd.h:
http://developer.apple.com/library/mac/#samplecode/PortMapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007879-Intro-DontLinkElementID_2
Идя по стороннему маршруту, взгляните на TCM Port Mapper. Он использует некоторые устаревшие функции, и потребуется немало усилий, чтобы запустить его с поддержкой ARC (если это важно для вас).
http://code.google.com/p/tcmportmapper/
Оба поддерживают UPnP и NAT-PMP.
Наконец, если ваше приложение работает как демон (без пользовательского интерфейса), вам необходимо ознакомиться с ipfw. Готовьтесь. Google для "ipfw os x". StackOverflow не позволяет мне публиковать более двух ссылок. Brilliant.
Надеюсь, это поможет ....