Я хочу читать и писать как с сервера, но не одновременно - PullRequest
0 голосов
/ 01 октября 2018

У меня есть класс сервера, у которого есть метод 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, который читает данные, даже если клиент не отправляет данные на сервер для чтения.Могу ли я решить эту проблему в любом случае?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...