現在、クライアント/サーバー アプリケーションは、データを送受信するたびに新しい接続を開いたり閉じたりしています。永続的な接続が1つになるように変更しようとしています。
私が抱えている問題は、サーバー上のソケットの DataInputStream が、次のデータのバッチを受信するまでブロックしたいときに EOFException をスローし続けることです。
このように単純にサーバーを書くことを考えました...
while socket is open {
while at socket's DataInputStream's EOF {
wait a second
}
//If we're here, then we have some data
do stuff
}
...しかし、これは非常に見苦しく、データが受信されるまでブロックする適切な方法ではありません。
読み取るデータがあるまでソケットをブロックするように指示するよりクリーンな方法はありますか? read() と readFully() を試しましたが、どちらも機能しません。