У меня очень специфическая проблема, и мое последнее средство было задать это в StackOverflow, поэтому, пожалуйста, будьте открыты!
Вот две программы:
A.Клиент: Java-клиент, работающий на телефоне Android.B. Сервер: Java-сервер, работающий на компьютере.
Вот что делают две программы:
Клиент отправляет серверные координаты (в строковом формате) каждые 2 миллисекунды (очень быстро) исервер должен прочитать все те координаты, которые отправляет клиент.Для достижения этого (учитывая, что сервер находится на 10.0.0.1 и прослушивает порт 54321), сервер должен иметь сокет, через который он считывает всю входящую информацию.И да, он получает всю информацию, НО, есть подвох!
Теперь, когда у вас есть предыстория истории, вот проблема:
Клиент подключается ксервер и, как только это произойдет, он начинает отправлять координаты (в строковом формате) с очень высокой скоростью.Сервер получает все сообщения, но не прекращает чтение, если клиент не отключился.Мне нужно, чтобы сервер читал каждое отдельное сообщение по мере его поступления!
Вот код, который я использовал для чтения из сокета (это для сервера, и он находится в своем собственном потоке):
while(true) {
try {
BufferedReader socketReader =
new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = socketReader.readLine();
System.out.println("New Message: " + str);
socketReader.close();
} catch (IOException e) {
//Client disconnected
System.out.println("Client disconnected.");
break;
}
}
Это вывод, который я получаю от клиента (где x и y - числа):
New Message: x,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,yx,y...and so on
И этот текст отображается только после того, как клиент отключился.Я хочу, чтобы он отображался при входе СООБЩЕНИЙ.
Просто чтобы уточнить, это желаемый результат:
New Message: x,y
New Message: x,y
New Message: x,y
New Message: x,y
... and so on
В случае, если это пригодится, вот методзапись в сокет (этот код от клиента)
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
while(running) {
writer = new PrintWriter(socket.getOutputStream(), true);
writer.write(x+","+y);
writer.flush();
}
В общем, мне нужно, чтобы мой сервер читал сообщения по мере их поступления, а не читал их все одновременнопосле того, как клиент отключается.PS В C # я также написал сервер, который читает информацию по мере ее поступления, но в Java это не работает!