Java Socket передача объекта класса от клиента серверу

91
23 марта 2022, 04:30

Изучаю Java Socket и клиент серверную часть, непонятен момент передачи объекта класса (имен и значений переменных для проведения вычислений) от клиента серверу, погуглил решил попробовать передавать через json. Есть класс

public class CalculatorModel
{
    private String JSON;    
    private double number;
    private double sizeCredit;
    // Конструктор
    public CalculatorModel(number, sizeCredit)
    {
        this.number=number;
        this. sizeCredit = sizeCredit;
    }
    // У него метод читающий данные из csv файла и кидающий их в лист
    public void readFile() throws IOException
    // Метод инициализации данных
    public void initialization()
    {
        for(int i=0; i<value.size(); i++)     
        {
            number = value.get(i);
            sizeCredit = value.get(i+1)
            Gson gson = new Gson();
            JSON  = gson.toJson(new CalculatorModel(number, sizeCredit));
        }
     }
    // Метод производит вычисления и бросает данные в лист
    calculation throws IOException ();
    {
        Возвращает List<String> exitData
    }
}

Клиент

public class CalculatorClientIO implements Runnable
{
    @Override
    public void run()
    {
        int serverPort=8080;
        String adress="127.0.0.1";
        try
        {
            Socket socket = new Socket(adress, serverPort);
            System.out.println("Устанавливаем соединение");
            DataInputStream in = new DataInputStream(socket.getInputStream());
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            out.write ????????;
            out.flush();
            String line = in.readUTF();
            System.out.println("Сервер ответил:  " + line);
        }
        catch(Exception er)
        {
           er.printStackTrace();
        }
    }
}

Сервер

public class CalculatorServerIO
{
    public static void main(String[] args)
    {
        int port=8080;
        CalculatorClientIO se=new CalculatorClientIO();
        Thread th=new Thread(se);
        th.start();
        try
        {
            ServerSocket ss = new ServerSocket(port);
            while(true)
            {
                Socket socket = ss.accept();
                System.out.println("Есть контакт !");
                DataInputStream in = new DataInputStream(socket.getInputStream());
                DataOutputStream out = new DataOutputStream(socket.getOutputStream());
                String line = in.read ??????;
                System.out.println("Клиент прислал : " + line);
                System.out.println("Отправляем ему в ответ: );
                out.write??????;
                out.flush();
            }
        }
        catch(Exception er)
        {
            er.printStackTrace();
        }
    }
}
Answer 1

Для отправки java обектов, используй ObjectInputStream и ObjectOutputStream. У них есть методы readObject , writeObject соответственно. Объекты будут сериализоваться в байты и обратно. Только класс должен реализовать интерфейс Serializable.

READ ALSO
Рефакторинг части кода в Intellij Idea

Рефакторинг части кода в Intellij Idea

Каким образом можно в IDE заменить часть кода таким образом, например я решил ввести

78
Почему не проходит HQL запрос?

Почему не проходит HQL запрос?

Подскажите, пожалуйста, что здесь не так? Хочу извлечь salary,subject, FirstName данные три поля, при том, что salary>500, но получаю Exception вида

88
Вывод второй таблицы в ListView

Вывод второй таблицы в ListView

Возникла проблемаИмею две таблицы в SQLite, в первой нормально выводятся и добавляются данные

126
Как добавить фильтр только к &lt;image /&gt; внутри SVG, но не ко всему SVG

Как добавить фильтр только к <image /> внутри SVG, но не ко всему SVG

У меня небольшая проблема со стилизацией SVG и изображением внутриВ SVG у меня есть два фильтра

115