read()メソッドを使ったループの抜け方
通信のプログラムを作っています。
送信側では、指定した数のバイトデータを作成し、送信します。
受信側では、そのバイトデータを受信して、受信にかかった時間を計測します。
送信側では、次のようにしてデータの最後の文字をsとして、作っています。
受信側では、sを読み込んだら、受信完了と見なし、受信処理を終了します。
送信と受信処理のコードを見てください。
送信側(Dataは指定したバイトデータの数値です)
for (int i = 0; i < Data-1; i++) {
out.write(i);
out.flush();
}
out.write('s');
out.flush();
受信側
while((part = in.read(buf,0,buf.length)) != -1) {
total += part;
}
受信側のコードだと、送信されたバイトがすべて読み込んだらループを抜けるのですが、
そうではなく、sを読み込んだらループを終了させたいのです。
read(buf,int,int)の戻り値を使って受信されたバイト数を確認したいため、
どうしてもread(buf,int,int)を使って受信したいのです。
read(buf,int,int)を使いつつ、送信バイトの最後の文字sを読み込んだら
ループを抜けるようにするには、どうすればよいでしょうか?
アドバイスをお願いします。
自分で考えたコードを載せます。
読み込んだバイトをbufに入れる。
そして読み込んだバイト数を合計する。
bufの最後の文字がsならループを抜けるというようにしたいのですが、
指定したデータ分を読み込みません。
for(;;){
part = in.read(buf);
total += part;
if(buf[total] == 's'){
break;
}
}
こちらの方も、指導していただきたいです。