TCP ストリームを介してバイナリ データを読み取る単純なクライアントを作成しています。ファイルは部分ごとに送信されるため、次のようなループがあります。
while (1 /* Maybe a check for EOF or if the socket is closed here ? */) {
ssize_t bytes_red = recv(
if (bytes_read <= 0) // not working properly ?
break;
...
}
読み取りは、受信したバイト数を返す recv() メソッドを介して行われます。アイデアは明らかに、TCP ストリームが開かれている限りデータを読み取ることですが、上記のアプローチは私にはうまくいかないようです。
他のアイデアはありますか?ストリームが閉じられるかEOFが発生するまでソケットから読み取るクリーンな方法は何ですか?
編集:上記のアプローチは正常に機能します。他の場所にバグがありました。