Структура общения клиент-сервера через ObjectOutput(Input)Stream Java

328
08 февраля 2017, 23:54

Помогите понять как правильно настроить структура общения через объекты. Сервер:

ServerSocket serversocket = new ServerSocket(7800);
Socket socket = null;
Data data;
while (serversocket != null) {
        socket = serversocket.accept();
        obIn = new ObjectInputStream(socket.getInputStream());
        while ((data = (Data) obIn.readObject()) != null){
              System.out.println(data.x); //1ый результат - 100, 2ой - 100
        }
}

Клиент:

        socket = new Socket("localhost", 7800);
        Data data = new Data();
        data.x=100;
        out = new ObjectOutputStream(socket.getOutputStream());
        out.writeObject(data);
        out.flush();
        out = new ObjectOutputStream(socket.getOutputStream());
        data.x=200;
        out.writeObject(data);
        out.flush();

Такой вариант не подходит так как out записывает кэш и значение в объекте меняться не будет. Я прочитал, что есть 2 варианта:

  1. После out.flush(); написать - out.reset();, который очищает весь кэш объекта, но мне такой вариант не подходит, долго объяснять почему.

  2. Закрывать поток out.close() и запускать новый. Но я когда его закрываю, закрывается и сам сокет и приходится заново подключать клиента (проверять логин, пароль и тд). Посоветуйте, как должен правильно работать такой клиент сервер?

READ ALSO
Конветирую класс java в kotlin

Конветирую класс java в kotlin

Конвертирую класс из java в kotlin, при условии, что класс рабочий

316
Алгоритм заливки замкнутого контура (FloodFill). Android. Java

Алгоритм заливки замкнутого контура (FloodFill). Android. Java

ЗдравствуйтеХочу реализовать заливку на Java под Android

572
Запись SMS/inbox Android >= 4.4

Запись SMS/inbox Android >= 4.4

Имеется код:

289
Проблема с кнопками в Table LibGDX

Проблема с кнопками в Table LibGDX

В общем, проблема заключается в следующем: при добавлении кнопок на Table возникает сдвиг их области нажатияНа рисунке 1

426