Enviar ArrayList<String> por Socket, esta correto?

0 respostas
SirDominque

Estou tentando enviar um ArrayList de String pelo socket, esta correto esse método de envio?
Não sei como receber ele pelo cliente... Alguém,por favor, me da uma luz?

public void ListaDeUsuarios(ArrayList&lt;String&gt; listaUsuarios, Socket socket) {
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ObjectOutputStream dos = new ObjectOutputStream(bos);
            dos.writeByte(2);
            dos.writeObject(listaUsuarios);
            byte[] msg = bos.toByteArray();

            DataOutputStream out = new DataOutputStream(socket.getOutputStream());
            out.writeInt(msg.length);

            out.write(msg);
            out.flush();
         
            System.out.println("@Encoder/Server/Bytes de Array Enviados para " + socket.getInetAddress().getHostName());

        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }

    }

No cliente, eu tenho isso aqui :

@Override
    public void run() {
        while (stopRunning == false) {
            
            try {
                
                if ((socket.isClosed() == true) || (socket.isConnected() == false)) {
                    stopRunning = true;
                    break;
                }
                
                DataInputStream dis = new DataInputStream(socket.getInputStream());
                
                int tamanho = dis.readInt(); // Read Int,
                int tipoMensagem = dis.read(); // Tipo de mensagem

                System.out.println("Cliente*Tamanho DIS : " + tamanho);
                System.out.println("Cliente*TipoMensagem DIS : " + tipoMensagem);
                
                switch (tipoMensagem) {
                    
                    case 0:
                        String mensagemComumPreta = decoding.mensagemComumPreta(dis, tamanho);
                        mainController.getMainviewFrontController().receberMensagemParaMainView(mensagemComumPreta);
                        break;
                    
                    case 1:
                        String mensagemColorida = decoding.mensagemColorida(dis, tamanho);
                        break;
                    
                    case 2:
                        decoding.decodeUserList(dis, tamanho);
                        break;
                    
                    case 3:
                        decoding.notImplemented(dis, tamanho);
                        break;
                    
                    case 4:
                        decoding.notImplemented(dis, tamanho);
                        break;
                    
                    case 5:
                        decoding.notImplemented(dis, tamanho);
                        break;
                    
                    case 6:
                        decoding.notImplemented(dis, tamanho);
                        break;
                    
                    case 7:
                        decoding.mensagemDeErro(dis, tamanho);
                        mainController.getMainviewFrontController().hideLoadingGif();
                        break;
                    
                    case 8:
                        decoding.mensagemDeErroDeLogin(dis, tamanho);
                        mainController.getMainviewFrontController().hideLoadingGif();
                        break;
                    
                    case 9:
                        decoding.mensagemDeSucessoDeLogin(dis, tamanho);
                        mainController.getMainviewFrontController().hideLoadingGif();
                        break;
                    
                    case 10:
                        decoding.notImplemented(dis, tamanho);
                        break;
                    default:
                        System.out.println("@Receiver-Client Failure Detected! - Wrong Protocol ? notLogged?");
                        System.out.println("Protocol Received : " + tipoMensagem);
                        decoding.notImplemented(dis, tamanho);
                        mainController.getMainviewFrontController().hideLoadingGif();
                        break;
                }
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
                closeConnection();
            }
        }
    }
Criado 10 de julho de 2013
Respostas 0
Participantes 1