У меня есть класс сервера, у которого есть метод main, который использует while (true) для поддержания работы сервера.У меня есть код для чтения и записи данных в цикле while.У меня есть клиентский класс, который имеет 3 метода, первый из которых читает данные, а второй и третий записывают данные.У меня есть другой класс, называемый контроллером дисплея, который вызывает методы в клиентском классе в зависимости от того, что мы делаем в приложении.
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(666);
FileReader fileReader = new FileReader("MYJSON.json");
BufferedReader buff = new BufferedReader(fileReader);
while (true) {
Socket socket = serverSocket.accept();
/* InputStreamReader inputStreamReader = new
InputStreamReader(socket.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = bufferedReader.readLine();
writeJson(str); */
String str;
OutputStreamWriter outputStreamWriter = new
OutputStreamWriter(socket.getOutputStream());
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
str = buff.readLine();
printWriter.write(str);
printWriter.flush();
printWriter.close();
InputStreamReader inputStreamReader = new
InputStreamReader(socket.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str1 = bufferedReader.readLine();
if (str1.equals("createNewJson")) {
fileReader = new FileReader("MYJSON.json");
}
}
}
import java.io.*;
import java.net.Socket;
public class Client{
public static String readDataFromServer() throws IOException{
Socket socket = new Socket("localhost",666);
InputStreamReader inputStreamReader = new
InputStreamReader(socket.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
System.out.println();
String str = bufferedReader.readLine();
System.out.println(str);
return str;
}
public static void createNewJsonFile() throws IOException {
Socket socket = new Socket("localhost",666);
OutputStreamWriter outputStreamWriter = new
OutputStreamWriter(socket.getOutputStream());
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
printWriter.write("CreateNewJson");
}
public static void writeDataToServer(String str) throws IOException {
Socket socket = new Socket("localhost",666);
OutputStreamWriter outputStreamWriter = new
OutputStreamWriter(socket.getOutputStream());
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
printWriter.write(str);
printWriter.flush();
printWriter.close();
}
}
Проблема заключается в том, что при вызове метода read в клиентском классе сервер выполняет код в цикле while для отправки данных на сервер, но также выполняет код для чтения данных.с клиента, но клиент не отправляет никаких данных, так как метод записи в классе клиента не вызывается.Я не хочу этогоИтак, когда он выполняет код для чтения данных, я получаю ошибку сброса соединения.Я знаю, что это потому, что мой сервер без необходимости выполняет строки кода в цикле while, который читает данные, даже если клиент не отправляет данные на сервер для чтения.Могу ли я решить эту проблему в любом случае?