Отправка объектов от клиента к серверу - PullRequest
1 голос
/ 25 мая 2020

Я пишу программу, в которой сервер dr aws формирует из PaintPanel в серверном приложении и где клиент может видеть эти формы в своем собственном приложении. В настоящее время сервер может отправлять данные формы клиенту, но клиент по-прежнему не может их видеть.

Код сервера для отправки данных формы

private void sendShape(Graphics drawedShape) {
        try {
            oos.writeObject(drawedShape);
            oos.flush();
            dispMessage("\n Teacher:" + "Shape sent!" );
        }catch(IOException e){
            jta.append("\nError");
        }
    }

Код клиента для получения данных формы

private void processConn() throws IOException {
        send("Successful");
        setButtonEnabled(true);
        String msg = "";
        Graphics object;

        do {
            try                

            {
                   Object incomingObject = ois.readObject();

                   if(incomingObject.getClass().toString().contains("Graphics"))
                   {
                          object = (Graphics) ois.readObject();
                          dispMessage("\n" + object);

                   } else
                   {
                          dispMessage("\n" + "Unknown object!");
                   }
            }

            catch (ClassNotFoundException e) {
                dispMessage("Unknown");
            }
        }
      while (!msg.equals("S:ExitTheSystem"));
    }

1 Ответ

1 голос
• 1000 Не отправлять и получать объект Graphics, а скорее логический (не GUI, не Graphi c) объект - например, параметры формы и цвет, а затем использовать это для рисования в client. Рассмотрите возможность отправки и получения данных в текстовом виде, например XML или JSON текст. Это значительно упрощает отладку. Если вам абсолютно необходимо отправлять двоичные сериализованные данные (например, если это требование присваивания), рассмотрите возможность отправки объектов Shape, объектов, реализующих интерфейс java.awt.Shape, так как их можно легко нарисовать с помощью PaintComponent JPanel вашего клиента. объект Graphics метода (фактически приведенный к Graphics2D). Используйте SwingWorker для получения и обработки входящих данных, используя для этого, в частности, его пару методов публикации / процесса.

Чтобы получить более конкретный c ответ и, возможно, код, рассмотрите возможность публикации своей лучшей минимально-воспроизводимой-пример программы с вашим вопросом

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