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…
[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…
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…
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…
[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…