| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/09/2004 17:38:43
|
dreamspeaker
GUJ Ranger
![[Avatar]](/images/avatar/c862890c3fd3e3d203580.jpg)
Membro desde: 22/04/2003 10:09:58
Mensagens: 752
Localização: SP - Capitar
Offline
|
Pessoas, cá estou eu envolvido na seguinte situação:
Eu tenho uma classe que recebe dados através de uma conexão Socket. Essa classe lê caracter por caracter que lhe é enviada, em buffers de 128 bytes, e "appenda" cada caracter em um StringBuffer, que mais a frente seu "toString()" é passado como parâmetro a outra classe, para os devidos tratamentos.
Eu recebo apenas letras, numeros e caracteres em branco (char = 32).
O que tá ocorrendo é o seguinte, vez por outra um determinado StringBuffer completo está "comendo" alguns caracteres em branco, gerando sequencias de Strings com 117, 121, 123... caracteres!
Exemplificando:
Não há caracteres especiais sendo "appendados" ao strB, e apenas caracteres em branco estão sendo "engolidos".
Eu não sei se há algum tipo de bug relacionado a versão 1.3.1....
java -version
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.3.1-02b-FCS)
Java HotSpot(TM) Client VM (build Blackdown-1.3.1_02b-FCS, mixed mode)
...., eu até gostaria de atualizar a versão, mas isso está fora do meu controle.
Alguma idéia? Já perdi algumas horas em cima disso.....
Valeu!
|
André Barbosa
Para de encher o saco e vai doar sangue!
twitter |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/09/2004 19:04:19
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Você recebe bytes ou chars? Presumo que receba array de bytes como deve ser. Então imprima o eco dos bytes que recebe e analise se o problema está na comunicação. As vezes a falta de um flush no lado que envia pode causar estragos na comunicação.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/09/2004 12:08:51
|
dreamspeaker
GUJ Ranger
![[Avatar]](/images/avatar/c862890c3fd3e3d203580.jpg)
Membro desde: 22/04/2003 10:09:58
Mensagens: 752
Localização: SP - Capitar
Offline
|
Oi, Luca.
Não, o problema não deve estar em falha na comunicação, porque o tamanho total da mensagem está correta. Se eu mando imprimir caracter por caracter antes de montar meu StringBuffer, todos aparecem corretamente.
Eu não entendi muito bem o que vc quis dizer com "Presumo que receba um array de bytes como deve ser". Eu uso um BufferedReader para ler os dados, e da forma como está feito....
..... o método read(...) prevê leitura em um array de chars.
To fazendo alguma bobagem?
Valeu!
|
André Barbosa
Para de encher o saco e vai doar sangue!
twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/09/2004 12:23:18
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
André, não sei bem se seu problema é este, mas sempre que vou ler e escrever sockets leio e escrevo bytes e nunca chars, Strings, doubles, etc.
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/09/2004 17:42:50
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Strings são strings, arrays de bytes são arrays de bytes, homens são homens e mulheres são mulheres - eu sei, eu sei, existe uma cirurgia - oops, uma forma de converter Strings em arrays de bytes - e vice-versa, mas nunca fica perfeito.
Por exemplo, quando se converte um array de bytes em uma String, costuma haver alguns problemas com alguns bytes, que são convertidos para o valor '?' em vez de algum caracter especial.
Quando se converte uma string para um array de bytes, alguns caracteres são convertidos para dois ou mais bytes, dependendo da codificação, ou simplesmente não conseguem ser convertidos corretamente (perdem-se).
Se você mistura as duas coisas, é como aqueles filmes mostrando colégios internos onde só estudavam meninas - dá sempre alguma confusão quando entram meninos. Você precisa saber exatamente o que está fazendo, e examinar cada byte e caracter para ver se a cirurgia - perdão, a conversão funcionou direitinho ou não.
Isso dá o maior rolo em criptografia e em sockets, para listar dois lugares onde dá um monte de problemas confundir as duas coisas.
|
|
|
 |
|
|
|
|