Отправка изображения клиенту с локальным изображением в Java? - PullRequest
0 голосов
/ 04 марта 2019
  public void run() throws IOException {
    server = new ServerSocket(port) {
      protected void finalize() throws IOException {
        this.close();
      }
    };
    System.out.println("Server is running on port 12345");

    while (true) {
      // accepts a new client
      Socket client = server.accept();

      // get nickname of newUser
      String nickname = (new Scanner ( client.getInputStream() )).nextLine();
      nickname = nickname.replace(",", ""); //  ',' use for serialisation
      nickname = nickname.replace(" ", "_");
      System.out.println("New Client: \"" + nickname + "\"\n\t     Host:" + client.getInetAddress().getHostAddress());

      // create new User
      User newUser = new User(client, nickname);

      // add newUser message to list
      this.clients.add(newUser);


      // Welcome msg
      newUser.getOutStream().println(
          "<img src='http://localhost:8000/welcome.gif' height='42' width='42'>"
          + "<b>Welcome</b> " + newUser.toString() +
          "<img src='https://www.kizoa.fr/img/e8nZC.gif' height='42' width='42'>"
          );

      // create a new thread for newUser incoming messages handling
      new Thread(new UserHandler(this, newUser)).start();
    }
  }

У меня есть http-сервер, который отправляет статические файлы.Поэтому, если я наберу localhost:8000/welcome.gif в браузере, http-сервер отправит изображение в браузер.Но я хочу, чтобы клиент Java получил это изображение.

Вот класс, который читает любые новые сообщения от клиента

class Read extends Thread {
    public void run() {
      String message;
      // till the this thread is interupted, it reads an input
      // from the server
      while(!Thread.currentThread().isInterrupted()){
        try {
          message = input.readLine();
            System.out.println("Message sent from server is: "+message);
          if(message != null){
            // if the client accepts broadcast user message from
            // the server, it must update their lists.
            if (message.charAt(0) == '[') {
              message = message.substring(1, message.length()-1);
              ArrayList<String> ListUser = new ArrayList<String>(
                  Arrays.asList(message.split(", "))
                  );
              jTextPane2.setText(null);
              for (String user : ListUser) {
                appendToPane(jTextPane2, "@" + user);
              }
            } else{
              appendToPane(jTextPane1, message);
            }
          }
        }
        catch (IOException ex) {
          System.err.println("Failed to parse incoming message");
        }
      }
    }
  }

Когда сервер отправляет,

"<img src='http://localhost:8000/welcome.gif' height='42' width='42'>"
          + "<b>Welcome</b> " + newUser.toString() +
          "<img src='https://www.kizoa.fr/img/e8nZC.gif' height='42' width='42'>"

клиенту, он печатает не удалось проанализировать входящие сообщения.Но второе изображение с src, https://www.kizoa.fr/img/e8nZC.gif, отображается.

Любая помощь высоко ценится.

...