Я пишу приложение клиента/сервера Java. Он должен позволить клиентам отправлять текстовые данные на сервер. Такое общение должно повторяться много раз, используя одно и то же соединение.java - непрерывная передача данных через Socket
Я пишу это так:
// On a server:
ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept();
socket.setKeepAlive(true);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
if (reader.ready()) {
for (String line = reader.readLine(); line != null; line = reader.readLine()) {
// do something with line
}
}
// On a client:
Socket socket = new Socket(host, port);
socket.setKeepAlive(true);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("Some data from client to server");
writer.flush();
Проблема в том, что я не могу читать на сервере, прежде чем я закрыть OutputStream на клиенте. Или я не могу снова открыть OutputStream на клиенте, если он уже был закрыт. Как я могу выполнять непрерывную отправку и чтение данных?
Избавьтесь от теста ready(). Он ничего не добавляет, кроме ошибки. – EJP