CFStream のプロキシプロパティはストリームの種類によって決まる
既存の CFStream アプリケーションでは、ストリームのプロトコル対応に応じて HTTP または SOCKS のプロパティを選択します。
CFStream のコードを保守しているアプリケーションでは、構成するストリームの種類に応じてプロキシプロパティを選びます。HTTP リクエストストリームには、単なるソケットストリームがプロパティ辞書だけでは得られないプロトコル処理があります。
| 構築する接続 | 文書化された構成 |
|---|---|
| HTTP プロキシ経由の HTTP CFStream | kCFStreamPropertyHTTPProxy |
| SOCKS プロキシ経由の CFStream | kCFStreamPropertySOCKSProxy |
Apple は HTTP プロパティを、特に HTTP CFStream を構成するものとして説明しています。そのようなストリームは、CFHTTPMessage リクエストから CFReadStreamCreateForHTTPRequest で作成できます。そのストリームを開くと、HTTP リクエストがシリアル化されて送信されます。
SOCKS プロパティは、少なくとも SOCKS プロキシのホストとポートのキーを含む CFDictionary を受け取ります。これは CFStream 上での SOCKS 処理に対応する公開プロパティです。プロキシ資格情報を使わない許可された公開 TCP テストでは、SOCKS プロキシ一覧がその辞書に入れる候補のホストとポート値を提供します。ストリームが対応するプロトコルと一致させ、実際の宛先とポートへの到達を確認してください。
選んだプロパティはストリームを開く前に適用し、プロパティ設定呼び出しのブール値の結果を確認します。拒否されたプロパティは、ストリームまたは値が要求された構成に対応していないことを示す場合があります。
HTTP プロキシ経由の任意の TCP トラフィックには、必要な CONNECT ネゴシエーションを行うコネクタを使用します。このネゴシエーションはプロトコルの作業であり、プロキシのアドレスへの生のストリームを作るだけでは行われていません。