olá,
estou com uma duvida em qual seria o melhor jeito de criar uma comunicação entre sockets que permita receber varios tipos de objetos diferentes…
atualmente minha classe está ± assim (deletei a parte inutel):
Listener:
BufferedReader msgFromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while(true){
if((msg = msgFromClient.readLine())!=null){
// faz o tratamento
}
}
metodos do Sender (vem do Flex):
[code]public function sendImageByteArray(ba:ByteArray):void{
writeBytes(ba);
flush();
}
public function send(o:String):void{
writeUTF(o);
flush();
}[/code]
até ai tudo bem, tudo oq eu mando de um lado (do Flex), chega no Java…
acontece que… eu preciso enviar tanto mensagens em texto, quanto imagens, e outros arquivos.
como seria o melhor jeito de fazer o Java entender quando está vindo um arquivo ou apenas texto?
pois se eu envio uma string do Flex (pelo padrão UTF)
a palavra “batata”
chega como 6 B A T A T A 0
jah q 6 eh o tamanho da String enviada e 0 o terminador…
entao se eu envio um array de bytes…
ele vai direto os \u0000 ~ \uFFFF
não achei um modelo de como identificar tudo que está vindo de forma mais simplificada…
tinha feito algo mais gambiarrento enviando uma UTF antes de enviar um bytearray para o Java identificar q eh uma imagem q esta vindo, mas não sei se é o mais ‘correto’…
pensei em tambem usar a classe DataInputStream (atualmente esta com a BufferedReader) que contem metodos para ler byte[], UTF, entre outros tipos…
BufferedReader.readLine() é indicado para esse caso?
obrigado =]