Base64 + Socket

Olá. Gostaria de saber se alguém já passou por este problema.

Tenho um byte[] de tamanho = X.
Quando faço o encode para a base64 ele fica com tamanho = Y.
Quando faço o decode da base64 ele retorna para o tamanho original = X.

Agora o problema:

Tenho um byte[] de tamanho = X.
Quando faço o encode para a base64 ele fica com tamanho = Y.

Envio para um servidor de socket o byte[] na base64 com tamanho = Y.
O servidor recebe o byte[] na base64 com tamanho = Y.

Quando o servidor faz decode da base64 ele não retorna para o tamanho original = X. O decode sempre retorna dois bytes a mais no lado do servidor = X+2…

Alguém já passou por isso?

a) Por que não transmite o byte[] diretamente? Seu protocolo é baseado em texto?
b) Você está recebendo byte[] dos dois lados?
c) Pode postar o método desse servidor?

Obrigado pela resposta ViniGodoy. Vou detalhar o que esta acontecendo.
Estava tentando utilizar o base64 porque tive um problema anterior…

Estava fazendo da seguinte forma:

Através do player, estou capturando o microfone “capture://audio?audio_enc=x-wav” do celular e armazenando em um byte[] de tamanho = X.
Consigo reproduzir normalmente este byte[] armazenado no meu celular.

Quando envio este byte[] para o servidor, ele chega corretamente com o tamanho X. Porém o player não consegue reproduzir o audio recebido…
Já fiz um teste de echo… Mando este byte[] para o server e recebo com a mesmo tamanho, porém o player também não consegue reproduzir…

Estou enviando e recebendo byte[]…

Engraçado, isso não faz o menor sentido. Já usou alguma ferramenta de trace para ver se o valor dos arrays de byte está sendo mantido?

Realmente… Ainda não verifiquei se os valores estão sendo mantidos, somente verifiquei a quantidade de bytes.
Vou fazer isso e retorno. Obrigado.

Realmente as informações do byte[] original não batem com as informações do byte[] que recebo do servidor de echo.

Sugiro que use o wireshark para vigiar a linha e ver se o erro está na transmissão do cliente para o servidor, ou do servidor para o cliente.

Certo, vou fazer isso. Obrigado.

ViniGodoy, obrigado pelos conselhos!

Comparando o byte[] de audio original com o enviado para o servidor, verifiquei que o byte[] original inicia sempre com o valor 82,…
Porém esse primeiro valor não chega no servidor, a primeira informação que chega no servidor é a sequencia depois do 82…

Constatando isso, quando envio este byte[] de audio, na ponta eu seto a primeira posição como 82, ai funciona perfeitamente.

Estranho não…?