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?
[code] public void ListaDeUsuarios(ArrayList<String> 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();
}
}[/code]
No cliente, eu tenho isso aqui :
[code]@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();
}
}
}[/code]