1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Enviar o mesmo objeto para vários clientes através de sockets em Java.

Olá,

Gostaria de enviar para vários clientes conectados ao servidor o mesmo objeto. O servidor trata cada cliente em um thread. Segue abaixo o código do servidor:

while(true){

            Socket cliente = servidor.accept();

            System.out.println("Nova conexão com o cliente " +   
            cliente.getInetAddress().getHostAddress());
            String addr = cliente.getRemoteSocketAddress().toString();
            System.out.println("Cliente ID "+ addr);
            clientes.add(addr);
            ThreadServidor ts = new ThreadServidor(cliente);
            ts.start();

Após isso ele instância o objeto que deve ser enviado:

String userToken = clientes.get(0).toString();
                System.out.println("Get User Token "+ getUserToken);
                String content = "content";
                Token token = new Token(getUserToken, getUserToken, content);

A classe do Objeto enviado:

public Token(String sender, String receiver, String content){
        Token.sender = sender;
        Token.receiver = receiver;
        Token.content = content;    
        System.out.println("Token"+sender+receiver);
    }

    public static Token returnToken(){
        Token token = new Token(this.sender, this.receiver, this.content);
        System.out.println("Requisitado o token "+sender+receiver);
        return token;
    }

Ao enviar uso o método writeUnshared, e ao receber o readUnshared.

Se uso os parâmetros do Objeto de forma não "static", cada Thread irá enviar um objeto diferente para cada cliente conectado. Se uso "static", o cliente não recebe o objeto, mas creio que o servidor o envia e ele não é instanciado do outro lado.

Alguma solução para que possa enviar o mesmo objeto em Threads diferentes que trata cada cliente e estes recebam o mesmo objeto?

Obg!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags sockets java ou faça a sua própria pergunta.