У меня очень странная проблема, и последнее мое задание касалось StackOverflow, поэтому, пожалуйста, будьте открыты!Чтение сокета Java-сервера
Вот две программы:
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
И этот текст появляется только после того, как клиент отключился. Я хочу, чтобы показать AS Сообщения поступают в
Просто чтобы прояснить, это желаемый результат:.
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();
}
так что в целом, что мне нужно для моего сервера, чтобы читать сообщения, как они приходят в вместо того, чтобы читать их все в то же время, после того как клиент отключается. P.S в C# i также написал сервер, и он читает информацию по мере ее поступления, но в Java это не работает!
Нет ли у вас что-то не так? Кажется, IOException происходит. – kosa