• ベストアンサー

winsock のrecvデータの終わりを知るには

Winsockの非同期プログラムで サーバーからクライアントへ,100MB前後のデータを送るプログラムを書いています. サーバーでsend()して,クライアントのcase FD_READ のイベント応答としてrecv()を繰り返すプログラムです. サイズが大きいので何度もrecev()して,データを結合していくことになりますが, 送信データの最後を知るエレガントな方法がないかと思っています. すべてが送り終わったら空send()をして,ゼロサイズのデータを送ることができればよいのですが. よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

データサイズを送るのが確実です。 一方が一つのデータを送るだけであれば送り終わったらshutdownすることでデータの終了を通知できますが, そうでないならばデータサイズを送る以外の方法はありません。 # 100MBとのことなので,TCPのみを想定しています。

ycuhakecha
質問者

お礼

そういう情報ありがたいです。 考え方が参考になります。 受信側で、データサイズとデータ本体を分離する コードが必要となりますが、確実な方法でしょうね。

関連するQ&A