вам нужно запустить поток и зациклить его до тех пор, пока сокет не будет закрыт (или сервер отправит сообщение остановки).
new Thread(new Runnable() {
public void run() {
while (true) {
String mstr=br.readLine();
if (mstr == null) {
break; // socket closed
}
if (mstr.equals("%QUIT%")) {
break; // protocol specific end message
}
// do whatever you like with mstr
// ....
}
}
}
Вам нужно добавить немного обработки исключений, и все будет хорошо.
Сервер сможет общаться с клиентом в любое время и без каких-либо вопросов.
Единственным недостатком является то, что вам необходимо поддерживать соединение с сокетом во время обмена сообщениями.
Теперь зачем это делать? Ну, представьте, у вас назначена встреча через 1 час. Вы предпочитаете смотреть на свои часы каждые 10 секунд или установить на них будильник, который сообщит вам за 1 час?