Enviando arquivo

dae galera,
to tentando passar um arquivo de um cliente para um servidor, o problema eh q n eh um arquivo de texto, eh um .jar (eh tipo pra fazer a atualizacao do server), soh q qndo eu passo o arquivo, ele fica corrompido, eu abro o byte-code pelo kedit e aparentemente esta igual, mas no md5sum eles tao diferentes, e qndo tento executar o arquivo tranferido da erro, como se estivesse corrompido…

como eu faco pra passar o arquivo?
vlw

[quote=“Felipe”]dae galera,
to tentando passar um arquivo de um cliente para um servidor, o problema eh q n eh um arquivo de texto, eh um .jar (eh tipo pra fazer a atualizacao do server), soh q qndo eu passo o arquivo, ele fica corrompido, eu abro o byte-code pelo kedit e aparentemente esta igual, mas no md5sum eles tao diferentes, e qndo tento executar o arquivo tranferido da erro, como se estivesse corrompido…

como eu faco pra passar o arquivo?
vlw[/quote]

Seta o modo FTP para BINARY (comando BIN)

vc n entendeu… n estou tentando passar o arquivo por ftp… estou tentando passar o arquivo pelo meu aplicativo, de preferencia aproveitando a conexao q jah esta estabelecia (mas se n for possivel, tb n tem prob em se passar por udp)…
vlw

[quote=“Felipe”]vc n entendeu… n estou tentando passar o arquivo por ftp… estou tentando passar o arquivo pelo meu aplicativo, de preferencia aproveitando a conexao q jah esta estabelecia (mas se n for possivel, tb n tem prob em se passar por udp)…
vlw[/quote]

Hmmm

Como voce está fazendo isso?
Voce precisa usar o mesmo charset em ambas as máquinas e transferir usando o primitivo byte (ou qualquer emcapsulador, desde que nunca saia do formato byte).
Se o charset nao for o mesmo acontece isso…

vlw, qndo eu tiver tempo eu testo isso…

eu tava usando a classe PrintWriter e tava mandando linha por linha do arquivo… pq q usando o PrintWriter fica corrompido??? pa acontece isso com arquivos binarios e com arquivos de textos funciona perfeitamente???
vlw

[quote=“Felipe”]vlw, qndo eu tiver tempo eu testo isso…

eu tava usando a classe PrintWriter e tava mandando linha por linha do arquivo… pq q usando o PrintWriter fica corrompido??? pa acontece isso com arquivos binarios e com arquivos de textos funciona perfeitamente???
vlw[/quote]

Exatamente.

PrintWriter é pra char e se tiver diferenca de charset, dá erro…manda um arquivo JPEG e veja, no que recebe o arquivo estará com uns artefatos, meio zuado…

Pra receber e enviar binário, use InputStream e OutputStream

eu usei DataInputStream e DataOutputStream para ler e gravar o arquivo em um array de byte e usei UDP (DatagramPacket) pra passar o arquivo do cliente pro servidor e funcionou perfeitamente…

vlw ae!

[quote=“Felipe”]eu usei DataInputStream e DataOutputStream para ler e gravar o arquivo em um array de byte e usei UDP (DatagramPacket) pra passar o arquivo do cliente pro servidor e funcionou perfeitamente…

vlw ae![/quote]

Mas não use UDP, pois voce arrisca perder pacotes.

UDP = não confere se o pacote chegou inteiro, só presta pra streaming ou aplicacoes que nao se importam em perder alguns dados…no caso de um arquivo, se perder um dado ele fica inválido (exceto imagens e alguns tipos).

TCP = checa cada pacote se foi recebido, e se nao foi, re-envia.

[quote=“mavi”][quote=“Felipe”]eu usei DataInputStream e DataOutputStream para ler e gravar o arquivo em um array de byte e usei UDP (DatagramPacket) pra passar o arquivo do cliente pro servidor e funcionou perfeitamente…

vlw ae![/quote]

Mas não use UDP, pois voce arrisca perder pacotes.

UDP = não confere se o pacote chegou inteiro, só presta pra streaming ou aplicacoes que nao se importam em perder alguns dados…no caso de um arquivo, se perder um dado ele fica inválido (exceto imagens e alguns tipos).

TCP = checa cada pacote se foi recebido, e se nao foi, re-envia.[/quote]

mas o UDP pode mandar soh uma parte dos dados??? disso eu n sabia… mas qnto aos dados n chegarem, assim q os dados chegao ao server ele manda por tcp uma msg avisando q recebeu, dai se o usuario n receber uma msg de sucesso ele pode mandar de novo…