Nếu ứng dụng của bạn đang được chạy bởi người sử dụng (ví dụ, nhấn đúp chuột trong Finder), bất kỳ nỗ lực của ứng dụng của bạn để tạo ra một người biết lắng nghe socket sẽ nhắc nhở người dùng để cho phép/từ chối nghe rằng - và sau đó điều chỉnh cài đặt tường lửa cho phù hợp - mà không cần bất kỳ sự can thiệp có lập trình nào vào phần ứng dụng của bạn.
Nếu tường lửa được đề cập là bộ định tuyến của bạn (một vấn đề mà gần đây tôi phải đối phó), bạn có một vài tùy chọn. Tùy chọn được hỗ trợ tốt nhất là Bonjour/mDNSResponder (miễn là bạn không muốn hỗ trợ tình huống hai lần). Apple cung cấp một ứng dụng wrapper Objective-C xung quanh dns_sd.h khá tù:
http://developer.apple.com/library/mac/#samplecode/PortMapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007879-Intro-DontLinkElementID_2
Đi con đường bên thứ 3, hãy nhìn vào TCM Port Mapper. Nó sử dụng một số tính năng không được chấp nhận và nó sẽ mất một chút nỗ lực để làm cho nó chạy với hỗ trợ ARC (nếu điều đó quan trọng đối với bạn).
http://code.google.com/p/tcmportmapper/
Cả hai hỗ trợ UPnP và NAT-PMP.
Cuối cùng, nếu ứng dụng của bạn đang chạy như một daemon (không có giao diện người dùng), bạn sẽ phải làm quen với ipfw. Brace mình. Google cho "ipfw os x". StackOverflow đang ngăn tôi đăng nhiều hơn hai liên kết. Rực rỡ.
Hope this helps ....
gì nếu các bức tường lửa là trên một router? Người dùng của bạn sẽ chỉ phải tự mình xử lý tường lửa. –