Я работал над проектом некоторое время, и он имеет встроенный сервер HTTP, который работает на порте 8080. Пользователям говорят получить доступ к устройству через, например, http://192.168.1.4:8080/ - работает отлично. Недавно я понял, что приложения порт использования CAN 80 для устранения необходимости ":8080", хотя, если я пытаюсь установить порт на 80, я получаю катастрофический отказ с "Ошибкой генерала CFSocket".
Какие-либо идеи, как включить порт 80 для веб-сервера на приложении?
Несколько снимков экрана, где это происходит:
Сначала - на iPad, приложение показывает URL, где можно получить доступ к нему.
(источник: enrogue.com)
Второй - Firefox, IP:
(источник: enrogue.com)
Вышеупомянутое из реального приложения на хранилище, оно не перепрошило волшебство или что-либо. Я знаю, что порты <1024 резервируются для администратора в системах UNIX, таким образом, вышеупомянутое приложение, очевидно, делает что-то определенное для получения доступа к порту.
Вы можете привязаться к порту 80 на IPv4 интерфейсе устройства, но не на IPv6 интерфейсе и не в симуляторе. Вам нужно будет изменить код сокета, чтобы прослушивать только IPv4 интерфейс, для симулятора вы можете условно использовать другой порт:
#if TARGET_IPHONE_SIMULATOR
[httpServer setPort:8080];
#else
[httpServer setPort:80];
#endif
iPhone основан на unix . Порты ниже 1024 зарезервированы для root / суперпользователя. Вы должны быть root, чтобы использовать эти порты.