Thuộc tính proxy của CFStream phụ thuộc vào loại luồng
Chọn thuộc tính HTTP hoặc SOCKS theo mức hỗ trợ giao thức của luồng trong một ứng dụng CFStream hiện có.
Trong ứng dụng đang duy trì mã CFStream, hãy chọn thuộc tính proxy theo loại luồng đang được cấu hình. Luồng yêu cầu HTTP có xử lý giao thức mà một luồng socket thông thường không có được chỉ nhờ từ điển thuộc tính của nó.
| Kết nối đang được tạo | Cấu hình đã được ghi nhận |
|---|---|
| HTTP CFStream qua proxy HTTP | kCFStreamPropertyHTTPProxy |
| CFStream qua proxy SOCKS | kCFStreamPropertySOCKSProxy |
Apple mô tả thuộc tính HTTP cụ thể là việc cấu hình một HTTP CFStream. Luồng như vậy có thể được tạo từ yêu cầu CFHTTPMessage bằng CFReadStreamCreateForHTTPRequest. Việc mở luồng đó sẽ tuần tự hóa và gửi yêu cầu HTTP.
Thuộc tính SOCKS chấp nhận một CFDictionary chứa ít nhất các khóa máy chủ và cổng của proxy SOCKS. Đây là thuộc tính công khai tương ứng cho việc xử lý SOCKS trên CFStream. Đối với một bài kiểm tra TCP công khai được phép mà không có thông tin xác thực proxy, danh sách proxy SOCKS cung cấp các giá trị máy chủ và cổng ứng viên cho từ điển đó. Khớp với giao thức mà luồng hỗ trợ và xác minh quyền truy cập đến đích và cổng thực tế.
Hãy áp dụng thuộc tính đã chọn trước khi mở luồng và kiểm tra kết quả Boolean của lệnh gọi đặt thuộc tính. Một thuộc tính bị từ chối có thể cho thấy luồng hoặc giá trị không hỗ trợ cấu hình được yêu cầu.
Đối với lưu lượng TCP tùy ý qua proxy HTTP, hãy dùng một trình kết nối thực hiện thương lượng CONNECT cần thiết. Thương lượng đó là công việc của giao thức; chỉ tạo một luồng thô đến địa chỉ của proxy thì chưa thực hiện điều đó.