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

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

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

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

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

iPad
(источник: enrogue.com)

Второй - Firefox, IP:

FF by IP
(источник: enrogue.com)

Вышеупомянутое из реального приложения на хранилище, оно не перепрошило волшебство или что-либо. Я знаю, что порты <1024 резервируются для администратора в системах UNIX, таким образом, вышеупомянутое приложение, очевидно, делает что-то определенное для получения доступа к порту.

9
задан Glorfindel 3 August 2019 в 17:15
поделиться

2 ответа

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

#if TARGET_IPHONE_SIMULATOR
    [httpServer setPort:8080];
#else
    [httpServer setPort:80];
#endif
5
ответ дан 4 December 2019 в 21:47
поделиться

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

4
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: