Веб-сервер на порту 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 зарезервированы для корень/суперпользователя. Вы должны быть суперпользователем, чтобы использовать эти порты.