Свойства прокси CFStream зависят от типа потока
Выберите свойство HTTP или SOCKS в соответствии с поддержкой протокола потоком в существующем приложении CFStream.
В приложении, поддерживающем код CFStream, выбирайте свойство прокси в соответствии с типом настраиваемого потока. Поток HTTP-запроса имеет обработку протокола, которую обычный сокетный поток не получает только из своего словаря свойств.
| Создаваемое соединение | Документированная конфигурация |
|---|---|
| HTTP CFStream через прокси HTTP | kCFStreamPropertyHTTPProxy |
| CFStream через прокси SOCKS | kCFStreamPropertySOCKSProxy |
Apple описывает свойство HTTP именно как настройку HTTP CFStream. Такой поток можно создать из запроса CFHTTPMessage с помощью CFReadStreamCreateForHTTPRequest. Открытие этого потока сериализует и отправляет HTTP-запрос.
Свойство SOCKS принимает CFDictionary, содержащий как минимум ключи хоста и порта прокси SOCKS. Это соответствующее публичное свойство для обработки SOCKS на CFStream. Для разрешённой публичной проверки TCP без учётных данных прокси список прокси SOCKS предлагает подходящие значения хоста и порта для этого словаря. Сверьтесь с поддерживаемым потоком протоколом и проверьте доступ к реальному адресату и порту.
Примените выбранное свойство до открытия потока и проверьте логический результат вызова установки свойства. Отклонённое свойство может означать, что поток или значение не поддерживают запрошенную конфигурацию.
Для произвольного трафика TCP через прокси HTTP используйте соединитель, выполняющий необходимое согласование CONNECT. Это согласование — работа протокола; создание сырого потока только к адресу прокси его не выполнило.