Problemas com Socket

Pessoal, estou com um problema em Sockets.

Me conecto com um sistema feito em Delphi, via socket, e necessito enviar alguns dados seguindo um padrao pre-definido. Mas ele esta enviando algum “Lixo” antes de enviar o que realmente necessito.

Funciona mais ou menos assim:

Ao fazer a conexão com o servidor em Delphi, ele envia esse pacote:

AC ED 00 05

(Que nao deveria ser enviado, pois nao pedi pra enviar nada )

E ao enviar o meu pacote, primeiro ele envia mais um outro pacote, q tbm nao quero nem saber dele:

77 0F ( pelo q eu notei, sempre vem 77 seguido no numero de bytes do pacote q quero enviar, neste caso 0F=15

ai logo em seguida ele envia o q eu realmente tenho q enviar:

55 0A 00 03 00 05 00 03 00 00 00 01 00 06 40

Com isso meu padrao de comunicacao vai por agua abaixo, pois esse dois primeiros pacotes (Lixos), sao desconsiderados pelo servidor, pois nao começam com “55” e tbm nao fazem parte dos dados.

Doido,

Vc está usando ObjectOutputStream no cliente Java ??? Posso apostar que sim…

ObjectOutputStream e ObjectInputStream só podem ser usados em conjunto, pois falam o seu próprio protocolo. São coisas do Java para o Java, como RMI, que tb usa serialização Java.

Use PrintWriter ou DataOutputStream ou BufferedOutputStream para cuspir o que vc quer. No caso do PrintWriter, muito coidado com o CharSet, que pode ser diferente do charset que o Delphi está usando.

se voce esta usando writeUTF tambem vai ter problema com isso, porque ele manda o tamanho da string e mais alguma coisa antes (veja o doc)

Realmente estava usando o ObjectOutputStream,
troquei para DataOutputStream e agora esta tudo funcionando da maneira que quero.

Valeu pela dica.