Lucas Carvalho Postado Maio 26, 2011 Denunciar Share Postado Maio 26, 2011 Bom dia a todos,Estou enviando mensagens via socket pelo DataOutputStream e preciso enviar nos dois primeiros bytes o tamanho da string em hexadecimal.se a string tem 187 caracteres preciso enviar 00 BB nos dois primeiros bytes.eu já testei alguns exemplos, porém ele sempre me aparece com C2 na mensagem, retornando no output 00C2BB.Um ponto a frisar é que em mensagens até 99 caracteres o bendito C2 não aparece.StringBuffer sb = new StringBuffer(String); int axLen = sb.length(); //Exemplo 1 int h = (axLen / 256); int l = axLen - (h * 256); sb.insert(0, (char)l); sb.insert(0, (char)h); //Exemplo 2 int parteAlta = ((axLen >> 4) & 0xf) << 4; int parteBaixa = axLen & 0xf; if (parteAlta == 0) sb.insert(0, (char)'0'); sb.insert(0,(char)(parteAlta | parteBaixa)); //Exemplo 3 int l = (sb.length() & 0xFF); int h = ((sb.length() >> 8 ) & 0xFF); DataOutputStream saidaa = new DataOutputStream(socket.getOutputStream()); saidaa.write(ei.getBytes()); saidaa.flush();Análise no outputHdrLen=32, Win=65393(241510916), Cksum=C861, Flags=18 Options= 0101080A 00003899 D2C6AD6B DATA +0000 00C2BB30 32313541 30313830 30303038 *.B.0215A01800008* +0010 41303030 30303630 30303030 30303031 *A000006000000001* +0020 30303030 30303238 39303032 33313332 *0000002890023132* +0030 34303430 35323530 34383139 31303030 *4040525048191000* +0040 31303030 33393039 33303030 33303030 *1000390930003000* +0050 30303030 30303030 30303030 30303030 *0000000000000000* +0060 30303030 30303030 30303030 30363130 *0000000000000610* +0070 30313230 39313134 38393030 35353232 *0120911489005522* +0080 30202020 20202020 20202020 20202020 *0 * +0090 20202020 20202020 20202020 20202020 * * +00A0 20202020 20202020 20202020 30343031 * 0401* +00B0 30343030 39303030 30303530 3937 *04009000005097 * ----------------------------------------------------------- OSA_EXPR 00010207 05/25 13:24:06.028871 OUTPUT gostaria de uma luz de todos vocês. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lucas Carvalho
Bom dia a todos,
Estou enviando mensagens via socket pelo DataOutputStream e preciso enviar nos dois primeiros bytes o tamanho da string em hexadecimal.
se a string tem 187 caracteres preciso enviar 00 BB nos dois primeiros bytes.
eu já testei alguns exemplos, porém ele sempre me aparece com C2 na mensagem, retornando no output 00C2BB.
Um ponto a frisar é que em mensagens até 99 caracteres o bendito C2 não aparece.
Análise no output
HdrLen=32, Win=65393(241510916), Cksum=C861, Flags=18
Options= 0101080A 00003899 D2C6AD6B
DATA +0000 00C2BB30 32313541 30313830 30303038 *.B.0215A01800008*
+0010 41303030 30303630 30303030 30303031 *A000006000000001*
+0020 30303030 30303238 39303032 33313332 *0000002890023132*
+0030 34303430 35323530 34383139 31303030 *4040525048191000*
+0040 31303030 33393039 33303030 33303030 *1000390930003000*
+0050 30303030 30303030 30303030 30303030 *0000000000000000*
+0060 30303030 30303030 30303030 30363130 *0000000000000610*
+0070 30313230 39313134 38393030 35353232 *0120911489005522*
+0080 30202020 20202020 20202020 20202020 *0 *
+0090 20202020 20202020 20202020 20202020 * *
+00A0 20202020 20202020 20202020 30343031 * 0401*
+00B0 30343030 39303030 30303530 3937 *04009000005097 *
-----------------------------------------------------------
OSA_EXPR 00010207 05/25 13:24:06.028871 OUTPUT
gostaria de uma luz de todos vocês.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.