Как отправить List <String>как Object и прочитать его с помощью ObjectInputStream - PullRequest
0 голосов
/ 07 мая 2020

У меня есть сервер и клиент, и я хочу из sendMsg (Object obj) отправлять объекты на сервер: первое - это настраиваемое сообщение класса (класс сообщения сериализуемый), второе - String, а последнее - List. Когда я пытаюсь прочитать список - сервер ничего не делает (без ошибок). Отладчик говорит (приложение запущено), затем я отправляю объект сообщения, клиент теряет соединение, потому что сервер не отвечает. Вот сторона клиента:

public static synchronized boolean sendMsg(Object obj) {
        try {
            if (socket == null || socket.isClosed()) {
                launch();
                return false;
            } else {
                objOutStream.writeObject(obj);
                objOutStream.flush();
                return true;
            }
        } catch (IOException e) {
            System.out.println("Outputstream not found.");
            return false;
        }
    }

Вот сторона сервера:

public synchronized void readMessages() throws IOException {
        while (true) {
            try {
                Object obj = objInputStream.readObject();
                if (obj != null) {
                    if (obj.getClass().getSimpleName().equals("Message")) {
                        server.chooseClientForMessage((Message) obj, this);
                        break;
                    }
                    if (obj.getClass().getSimpleName().equals("List<String>")) {
                        sendMessage(server.getOnlineClients((List<String>) obj));
                        break;
                    }
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
...