2010-11-23 9 views
0

私はブロックされたクライアント/サーバーをWinsock経由でローカルに接続しています。クライアントはfirefoxを使用してウェブサイトからデータを取得し、特定のデータをサーバーに渡して余分な処理を行います。サーバーは常に応答し、処理には1/10秒から数分かかることがあります。クライアントにはサーバー以外のものとのwinsock接続はありません。すべてのWebデータがfirefox経由でハードドライブに取得されます。Winsock接続がランダムに失敗することはありますか?

この設定は、クライアントのrecvがエラーコード10054(WSAECONNRESET)で-1(SOCKET_ERROR)を返すまで、ランダムに見えるまではうまくいきます。つまり、サーバーは接続を終了したと考えられますが、実際には何も問題がないかのようにサーバーはまだrecvを待機しています。接続は、このようにして、約1時間半ほどの作業で5分またはそれ以降の早期に失敗しました。クライアントは約10種類の要求をサーバーに送信し、さまざまな種類の障害が発生しています。要求の頻度はほぼ一定で、おそらく平均で1分あたり10〜15です。接続が切断されると、コンピュータにインターネットの問題が発生せず、リモートデスクトップも切断されません。

最初はメモリリークがあると思っていましたが、広範なデバッグ後にはもう存在しません。 Firefoxは時々かなりのHTTPトラフィックに巻き込まれているので、使用可能なソケットバッファスペースなどを埋めている可能性があると思っていました。疑わしいようですが、現時点ではわかりません。だから、より多くのメモリリーク、おそらく隠されたバッファオーバーラン、あまりにも多くのWebトラフィックがありますか?私のWinsockアプリケーションが無作為に失敗する原因は何ですか?

+1

コンピュータソフトウェアでは、何もランダムではありません。すべての理由があります。 –

+0

権利。私はランダムに、私は一貫して再現したり、原因を見つけることができないということを意味していることを明確にすべきだったと思います。 – rotanimod

+1

クライアントとサーバー間のネットワークはどのくらい複雑ですか?多分、中間リンクが落ちていますか? – wallyk

答えて

2

職場のファイアウォールのようなサウンド。

多くのファイアウォールは、アイドル接続(つまり、しばらくの間データが転送されていないオープンTCPセッション)を終了するように設定されています。特にHTTP接続の場合は、通常は永続的ではありません。

関連する問題