Enviar vários byte[] - RESOLVIDO

8 respostas
guisantogui

Galera to com um problemão, e não sei nem por onde começar,

tenho que enviar um arquivo de um cliente para um servidor, porém esse não é o problema, afinal já consegui resolver isso, o problema real é que tenho que “espedaçar” o arquivo em vários arrays de 50 bytes e enviar um de cada vez, e a cada um que chegar no servidor eu validar com CRC32 e caso não tenha chegado ok, retornar e enviar novamente, a bronca está nessa comunicação de um lado para o outro, conto com a ajuda de vcs, apenas re-lembrando já consegui enviar o arquivo inteiro, mas agora tenho que espedaça-lo e enviar os byte[].

Brigadão pessoal

8 Respostas

rmendes08

Mas porque você tem que fazer essa quebra ? Porque na prática, o protocolo TCP já faz isso pra você.

guisantogui

Eu tenho que enviar isso via UDP!

ViniGodoy
  1. Implemente o protocolo TFTP (se for rede local);
  2. Use TCP (se for internet).

Usar UDP para enviar arquivos, a menos que seja em broadcast, é extremamente ineficiente.

guisantogui

Então Vinny o problema que isso é uma implementação para faculdade, e o professor exigiu em UDP, até to conseguindo montar os arrays de 50 bytes, mas não tenho a mínima idéia de como desmontar e juntar todos eles novamente! :frowning:

Alguma dica?

ViniGodoy

Você provavelmente vai ter que iniciar com um pacote indicando a quantidade de bytes que serão transmitidos.

Eu também colocaria em cada pacote UDP uma numeração para o pacote, para que o outro lado da conexão possa solicitar a retransmissão e dizer quem precisa ser retransmitido. Isso também resolve o problema do fato de, ocasionalmente, um pacote UDP não chegar.

Uma boa idéia seria usar um protocolo de janela deslizante nesse processo.

Montar os arrays, então, seria apenas uma questão de criar um array maior e copia-los lá lado a lado. Ou, como a transmissão é de arquivos, escrever esses arrays em ordem num OutputStream.

Nesse link, eu deixei um chat em UDP. Junto com o chat há um programa que simula erros na conexão UDP, tais como perda de pacotes, alteração de ordenação, etc.
Seria uma boa você utiliza-lo ao validar seu trabalho:

guisantogui

O problema de montar os arrays de bytes consegui resolver, brigadão pela ajuda pessoal!

Mas com certeza voltarei com mais alguns bugs para vcs. :smiley:

ViniGodoy

Conseguiu resolver como?

guisantogui

depurando e contando bit, foi meio roots mas deu certo, eu meio que usei POG, mas final de semestre faz parte.

Criado 13 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 8
Participantes 3