• 締切済み

C++ TCP受信 突然切れる

C++のTCPソケット(recv関数)を使ってサーバからデータを定期的に受信する クライアントを作っているんですが、データの受信中?に突然TCP接続が 切れることがあります。 より正確にはrecvの戻りが0(sizeが0=切断された)になってしまいます。 物理的に配線が切れたとかでもなく、誰も手を触れず放置した状態のときに突然 切れたりとかわけが分かりません。 もしかしてTCPソケットって接続し続けてはいけないとかあるんですかね? 分かる人がいたら宜しくお願いします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

要求サイズが0になっているという事はありませんか? そのときには切断されていなくても戻り値は0になりますけど。

すると、全ての回答が全文表示されます。
回答No.1

>物理的に配線が切れたとかでもなく、誰も手を触れず放置した状態のときに突然 >切れたりとかわけが分かりません。 TCP/IPは「受信側と送信側が、直結されている訳ではない」ので、経路の途中で強制切断する可能性があります。 >もしかしてTCPソケットって接続し続けてはいけないとかあるんですかね? 「接続し続けていても構わない」一方で「接続し続けたまま放置した場合、その接続が維持されていると言う保証は無い」です。 例えば、通信を中継している装置で「トラフィック軽減のため、10分間、通信が無かったら、論理的な接続を切る」と言う実装がされている可能性があります。 TCP/IPは、基本的に「バケツリレー」なので「途中で、バケツをリレーしている誰かが、バケツを放り捨てて、通信を切ってしまう可能性」があります。

すると、全ての回答が全文表示されます。

関連するQ&A