4

HttpWebRequest を使用して非同期で長時間実行される要求を作成しています。リクエストの実行中に、リクエストのローカル ポート (つまり、サーバーではなくクライアントのポート) を取得できるようにしたいと考えています。それ、どうやったら出来るの?

HttpWebRequest.ServicePoint.BindIPEndPointDelegate を見てきましたが、呼び出し元がローカルの addy/port を指定できるようです。理想的には、HttpWebRequest が通常どおりローカル ポートを選択できるようにしてから、何を選択したかを尋ねたいと思います。

4

1 に答える 1

0

残念ながら、HttpWebRequestクラスは実際にあなたが求めているものを公開していません。

以下で説明する内容を本番環境で使用することはお勧めしません。それはただのプログラマーの楽しみです。

このServicePointクラスには、内部プロパティを通じて公開される というプライベートNetworkStreamメンバーがあります。m_NetworkStreamNetworkStream

すでにご存知かもしれませんが、ローカル IP エンドポイントにアクセスできる基になるソケットを提供NetworkStreamするパブリック プロパティが既に公開されています。Socket

したがって、唯一の課題は、PropertyInfoforServicePoint.NetworkStreamを取得し、特定のHttpWebRequestインスタンスの値を取得することです。そこからは直線になります。

注:適切な解決策として、Windows HTTP サービスを調べてから、マネージド ラッパーを作成することをお勧めします (まだ存在しない場合)。

楽しみ!

于 2012-06-26T17:12:26.683 に答える