javaのソケットプログラミングについての質問です、よろしくお願いします。


データを送信するクライアントと、受信するサーバ間でファイルのやりとりをするプログラムを作成しました。
データを正しく送信できたのですが、サーバでは空のファイルしか受信できませんでした。
パケットをモニタリングしたところデータは正しく送信されていました。

クライアントのファイル送信の処理部分は、以下のとおりです。

FileInputStream fis = new FileInputStream("送信するファイル名");
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());

while((n=fis.read(buf))>0){
bos.write(buf,0,n)
}
bos.flush();

サーバのファイル受信の処理部分は、以下のとおりです。

FileOutputStream fos = new FileOutputStream("受信側のファイル名");
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());

while((n=bis.read(buf))>0){
fos.write(buf,0,n);
}
fos.flush();

クライアントがbos.write()するときに、サーバ側でbis.read()の待ち状態になっていないと
ファイルが受信できないのでしょうか?