掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ソケット回線断の検出 (ID:57457)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VC++とは直接関係ないのですが、一応VCで開発してるので 教えてください。現在ソケット通信を使ってデータをやり取りする プログラムを書いてます。が、回線断の検出で悩んでいます。 動作としては「回線は繋ぎっぱなし」で「必要な時に必要なデータを送る」 動作をしたいので、データが送信されない場合は、常にrecv() = 0でループ する作りにしています。(このやり方そのものが間違ってたりしますか?) サーバ側でselect()でループを回し、FD_ISSET()でデータがあればrecv()で 取得。recv()が-1を返せば回線断とみなしてます。 クライアント側のAPL(単純なコンソールアプリ)を強制終了(×ボタン押下) した場合は、select() = 0/recv() = -1が返り、切断を検出出来るのですが、 強制終了ではなくshutdown()->closesocket()と手順を踏んでアプリを終了 した場合、何故かFD_ISSET()でデータ有り/recv() = 0となり切断を検出 出来ません。 回線断の方法によってrecv()の戻り値が変化する理由がわかりません。 どっちとも回線は切れているのだし。(>_<)。 どなたか回答宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.