![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VC++2010 TCPIP通信の受信処理について質問させていただきました。
現在、VC++2010 MFCのダイアログ でアプリケーションを作成しています。
現在、TCPIP通信で、受信処理のプログラムの所になるんですが、
recv関数を使用してるんですが、この関数は相手側からメッセージが送信される・切断される の
イベントが発生しないとrecv関数は終了しません。
ここで質問なんですが、この関数でタイムアウト時間を設けたいのですが
どのようにしたら良いかわかりませんでしたので質問させていただきました。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>現在、VC++2010 MFCのダイアログ でアプリケーションを作成しています。
でしたら…CAsyncSocketクラス使ったらいかがです?
http://msdn.microsoft.com/ja-jp/library/t7a47kk4 …
http://msdn.microsoft.com/ja-jp/library/3tbz7kf5 …
>recv関数を使用してるんですが、この関数は相手側からメッセージが送信される・切断される の
>イベントが発生しないとrecv関数は終了しません。
ブロッキングモードでしたらそうなりますね。
# recv()をなんらかのメッセージハンドラ内で処理しているとウィンドウの移動とかに反応できなくなります。
ブロッキングモードでもselect()使って判別すれば…受信データが無いときにrecv()をコールしない。ということも可能でしょうか。
http://www.geekpage.jp/programming/winsock/selec …
>ここで質問なんですが、この関数でタイムアウト時間を設けたいのですが
>どのようにしたら良いかわかりませんでしたので質問させていただきました。
非ブロッキングモードにするのが一般的…でしょうかねぇ。
# CAsyncSocket使う…ということになります。検索すればサンプルくらい見つかるでしょう。
上記のselect()でもタイムアウトの設定ができるのでそちらを使う。というのもアリです。
ソケットオプションでタイムアウトが設定できたかも知れませんが。
http://msdn.microsoft.com/en-us/library/windows/ …
No.2
- 回答日時:
(MFCのCAsyncSocketクラスではなく) Winsockを直接使うのであれば WSAAsyncSelect( ) による非同期ソケットを利用するのが一般的でしょう。
受信できる状態になったらウィンドウメッセージによる通知を受け取るので、その状態で recv( ) を呼び出せばブロックされることなくデータを取得することができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- その他(テレビ・ラジオ) 一般家庭のNHK受信料に関する質問です。 我が家に3台テレビがあり、地上波だけ受信料を払っています。 2 2023/03/26 17:15
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- その他(メールソフト・メールサービス) hotmail タイムアウトエラー 2 2023/04/16 18:48
- 格安スマホ・SIMフリースマホ IIJimo使ってる方いますか? 関東で使う分には問題ないですか? ほかの会社と比べてみましたが、あ 4 2022/04/04 18:05
- その他(資産運用・投資) 海外銀行の預金がなかなか返してもらえません。 3 2023/03/02 20:05
- LINE ラインの疑似体験(?)が出来るサービスは? 3 2023/03/26 19:52
- その他(メールソフト・メールサービス) Windows10付属のメール、なぜ設定が劇的に簡単になったのか? 1 2022/12/16 13:14
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WriteFile()でのデータ送信がで...
-
C# シリアル通信でデータ受信...
-
winsockでソケット通信の開発を...
-
シリアルポート通信
-
Linuxでのシリアル通信について...
-
POSTデータが送信されなくなり...
-
「スイッチングハブのバッファ...
-
rs232cでの受信データ(mscomm)...
-
ネットワークカメラの動画保存...
-
バイナリデータ受信時のデータ順
-
popen実行時にバッファが空の場合
-
RS-232Cでバイナリデータを受信...
-
MSCommでoutputできない
-
socket: recvはいつ,どれだけ...
-
TCPでの非同期型select関数につ...
-
シリアル通信 大きいサイズの...
-
【CAsyncSocket::OnReceive()呼...
-
Connection reset by peer
-
SSL_connect(ssl)
-
Macターミナルで実行中のプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
socket: recvはいつ,どれだけ...
-
WriteFile()でのデータ送信がで...
-
winsockでソケット通信の開発を...
-
UDP処理のエラーについて
-
RS232C通信(PC⇔PLC)
-
シリアル通信の出力バッファと...
-
シリアルポート通信
-
SocketのSend関数でのCLOSEの検...
-
「スイッチングハブのバッファ...
-
シリアル通信 大きいサイズの...
-
Connection reset by peer
-
WinsockAPIのrecvfromの受信デ...
-
C#で通信処理。応答がない場合...
-
rs232cでの受信データ(mscomm)...
-
ソケット通信内 read関数について
-
Linuxでのシリアル通信について...
-
バイナリデータ受信時のデータ順
-
RS-232Cでバイナリデータを受信...
-
recv関数の受信結果について
おすすめ情報