C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.17210 の関連記事表示

<< 0 >>
■17210  Re[7]: ダウンロード中のデータにアクセスする方法
□投稿者/ れい -(2008/04/18(Fri) 16:11:40)
    No17200 (紙屑 さん) に返信
    > AyncDownloadDataは確かに別スレッドでバイト配列を取得するのですが、
    > ダウンロード中にバイト配列にアクセスする手段を提供していないようです。
    > ダウンロード終了時に発生するDownloadDataCompletedイベントをハンドルして、
    > ハンドラの引数からバイト配列が取得できるようです。

    普通にWebClient、HttpWebRequest/ResponseかTCPClient、Socketでデータを取りましょう。

    >「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=CR の後には LF を指定しなければなりません」

    は、サーバーのRFC違反で、例外を防ぐには
    HttpWebRequest/ResponseやそれをつかったWebClientを使うのであれば

    HttpWebRequestElement.UseUnsafeHeaderParsing = True

    である必要があります。

    HttpWebRequest/Responseはヘッダーやリクエストラインのの生成/解析を行ってくれるクラスで、
    通常は便利ですが、
    プロトコル違反のサーバーにつなぐ場合や
    コネクションを細かく制御したいときにはより低レベルな実装である
    TCPClinetやSocketのほうがよい場合もあります。

    HTTPのプロトコルはそれほど難しいわけではなく、
    汎用なものを求めているわけではないようですので、
    TCPClientでも難しくは無いと思います。

    WebClientを使うのであればWebClient.OpenReadを、
    HttpWebRequest/Responseを使うのであればHttpWebResponse.GetResponseStreamを、
    TCPClientであればTCPClient.GetStreamを。

    これらストリームを使えばストリームの途中で解析が可能です。

    AyncDownloadDataではできません。
    また、マルチスレッドである必要はありません。
    シングルスレッドでも十分に可能です。
記事No.17169 のレス /過去ログ34より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -