2011-12-23 326 views
1

私は奇妙な問題があります。私のC++アプリケーションをWindows XP上で39時間実行すると、ネットワークが壊れてアプリケーションが失敗します。それを数回見ました。 「ping localhost」と入力すると、「no resources」と表示されます。インターネットでthis threadが見つかりました。人のアドバイスは "ipconfig/renew"となりました。"リソースがありません"とPingする - 何が起こる可能性がありますか?

私が知りたいことは、どのようなアクション(Windows API呼び出し)が原因であるかだけです。私は100%近くの問題がネットワークカードにあると確信しています(他のカードはうまくいきます)。しかし、私の行動がそれを引き起こしていることを理解したいだけです。

私のアプリケーションはメガバイトのコードで構成されていますので、今すぐエラーを再現できるかどうかを確認するために数行のコメントを外すことはできません。

ネットワークカードドライバによって実行されるWindows API呼び出しの一覧はありますか?たとえば、"sendto"は、ネットワークにデータを送信するため、ドライバによって実行される可能性が最も高いです。

ネットワークドライバが正しく動作しない場合に表示されるテスト(ブラウザのAcidテストなど)はありますか?

+2

私は非常に懐疑的です。問題はネットワークカードまたはそのドライバであり、テストすることはおそらく時間の無駄です。問題はあなたのコード、おそらくソケット、メモリ、またはハンドルリークです。 netstatやタスクマネージャのような単純なツールは、おそらく問題が何であるかを伝えます。 –

+0

合意。 DHCPのリースやリニューアルのいずれかと関係があると私はさらに懐疑的です。 – EJP

答えて

2

あなたがソケットを使い果たしたような音です。ソケットを使用したらソケットを解放してもよろしいですか?

+0

100%ではありませんが、ソケットを作成しても "closesocket"で閉じない単純なテストを書いたところです。システムの動作は異なります。プロンプトに「pingは内部コマンドまたは外部コマンドとして認識されない」と表示されるため、「ping localhost」さえできません。次回は問題を見ると、ソケットを作成してどのエラーが表示されるかを確認するアプリを実行しようとします。 – Graf

+0

確かに、それを「ソケットその他の限られたリソース」に拡張してください。それはまた、このようなビット:http://www.recurity-labs.com/content/pub/Microsoft_Windows_CVE-2009-1926_MS09-048.txtまたはこれhttp://msdn.microsoft.com/en-us/library /cc296845(v=bts.10).aspx。 –

+0

いずれにしても、まず最初にあなたのプログラムを見てください。作成されたネットワークオブジェクトが有効範囲外に出るようにしたり、明示的に「削除」してリソースを再利用できるようにしてください。 –

0

ネットワークカードが最新のドライバで更新されていることを確認するか、ドライバを再インストールしてから、マシンを一度再起動してください。