初めて掲載しますが....、 ソケット通信で、select()を使用した非同期通信をさせているのですが、 select()で検知した当該FDを(例としてFD=10と設定)recv()したら、 FD=10のrecv()返値が0(CLOSE?)となることがあります。 recv()返値が0の場合は、相手側がCLOSEしたものと認識はできるのですが、 疑問に思う動作でそれは、通常FD=10ならFD=10を介して送受信を行い、 select()監視しさせて、何かイヘ゛ント発生があればrecv()の動作に遷移する 動きを正常にしているのですが、突然的に(不規則と言うか、不確定と言うか) FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒 (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら 返値が0であると言う動作があります。 このような動作になる原因が解らず、何かヒントや調べる手立てとかありませんか???。 (これって、ネットワーク障害/ネットワーク負荷とか、相手側マシンのHW的障害 などの影響も考えられますか....???) ...記述表現が的確でありませんが、ご了承ください。 |