0

私はこの NNTP クライアントを作成しました...そして、より大きなプロジェクトの一部として使用しようとしていますが、downloadArticle(string msgID) が余分なバイトをランダムにダウンロードしているようです。たとえば、アプリケーションを実行すると、CR/LF の後に 3 ガベージ バイトが挿入されます。アプリケーションを再度実行すると、それらのバイトがダウンロードされません。問題を特定しましたが、yenc デコーダーなどにはありません...間違いなくこの NNTPclient クラスにあります。

完全を期すためにクラス全体を投稿しました。コードはこちら: http://www.pastebin.com/m214131cc

4

1 に答える 1

1

改行に関する複雑でエラーが発生しやすいロジックがたくさんあります。エラーはほぼ確実にどこかにあります。また、一貫性のない(および一貫性のない名前のIn/OutputStreamsとReaders/Writersの組み合わせを使用しているようです。

問題は、実際にそれがすべて必要なのかということです。私はあなたがそうしないとかなり確信しています。そのクラスが行うように見えるのは、InputStreamの内容をファイルに書き込むことだけです。そのためには、改行(または実際には文字)について考える必要はありません。byte[]バッファを介して生のバイトを転送するだけです(または単にApache commons-ioのIOUtilsクラスを使用します)。

または、改行を正規化する必要がある場合は、エラーが発生しやすい独自の改行認識ロジックを作成する代わりに、BufferedReader.readLine()を使用します。

于 2010-02-20T17:44:08.283 に答える