Веб-сервер на порту 80 на iPhone

Я работал над проектом некоторое время, и у него есть встроенный HTTP-сервер, который работает на порту 8080. Пользователям предлагается получить доступ к устройству через, например,http://192.168.1.4:8080/ -- отлично работает. Недавно я понял, что приложения могут использовать порт 80 чтобы удалить необходимость": 8080", хотя, если я попытаюсь установить порт на 80, я получу сбой с"общей ошибкой CFSocket".

любые идеи, как разрешить порт 80 для веб-сервера на приложение?

несколько скриншотов, где это происходит:

во-первых -- на iPad приложение показывает URL-адреса, где вы можете получить к нему доступ.

iPad http://enrogue.com/port80/ipad.jpg

второй -- Firefox, по IP:

FF по IP http://enrogue.com/port80/firefox_byip.png

выше из реального приложения в магазине, это не взломанная магия или что-то еще. Я знаю, что порты

2 ответов


вы можете привязаться к порту 80 на интерфейсе IPv4 устройства, но не к интерфейсу IPv6 и не в симуляторе. Вам нужно будет изменить код сокета, чтобы слушать только интерфейс IPv4, для симулятора вы можете условно использовать другой порт:

#if TARGET_IPHONE_SIMULATOR
    [httpServer setPort:8080];
#else
    [httpServer setPort:80];
#endif

iPhone основан на unix. Порты ниже 1024 зарезервированы для корень/суперпользователя. Вы должны быть суперпользователем, чтобы использовать эти порты.