Opa e aew Galera! :D
Estou com problemas na transferencia de arquivos (uma foto), o arquivo é enviado pelo cliente e chega ao servidor com 0KB e quando encerro o servidor a foto fica com 1,96kb e abre normalmente, o que pode ser?
Vou postar os códigos, estes que veio daqui do fórum, mas já testei a mesma coisa com códigos de outros sites e sempre o mesmo problema... e já pesquisei bastante e nada :oops:
Cliente:public synchronized void enviarImagem(String caminho)
{
try
{
File f = new File(caminho);
FileInputStream in = new FileInputStream(f);
System.out.println("Inicio");
OutputStream out = sock.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out);
BufferedWriter writer = new BufferedWriter(osw);
writer.write(f.getName() + "\n");
writer.flush();
int tamanho = 4096; // buffer de 4KB
byte[] buffer = new byte[tamanho];
int lidos = -1;
while ((lidos = in.read(buffer, 0, tamanho)) != -1) {
out.write(buffer, 0, lidos);
System.out.println("Fim");
}
}
catch(Exception ec)
{
}
}
public synchronized void baixarImagem()
{
String nImagem = login + ".jpg";
try
{
System.out.println("Inicio");
InputStream in = sock.getInputStream();
InputStreamReader isr = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(isr);
String fName = reader.readLine();
System.out.println(fName);
File f1 = new File(nImagem);
FileOutputStream out = new FileOutputStream(f1);
System.out.println("Meio");
int tamanho = 4096; // buffer de 4KB
byte[] buffer = new byte[tamanho];
int lidos = -1;
while ((lidos = in.read(buffer, 0, tamanho)) != -1) {
System.out.println(lidos);
out.write(buffer, 0, lidos);
}
out.flush();
System.out.println("Fim");
}
catch (Exception ec)
{
}
}
public ConexaoJogo(Socket s, String l)
{
sock = s;
login = l;
try
{
InputStream entrada = sock.getInputStream();
DataInputStream entradaStr = new DataInputStream(entrada);
OutputStream saida = sock.getOutputStream();
DataOutputStream saidaStr = new DataOutputStream(saida);
while(true)
{
int opcao = entradaStr.readInt();
if(opcao == 1)
{
}
if(opcao == 2)
{
receberMensagem();
}
if(opcao == 3)
{
baixarImagem();
//setImagem();
}
if(opcao == 4)
{
getImagem();
}
}
}
catch(Exception e)
{
}
}
Como da para reparar existe um laço while(true), que logo que termina a execução do método baixarImagem(), fica querendo receber: int opcao = entradaStr.readInt();
Tentei resolver de um monte de formas mas nenhuma com sucesso, por isto que necessito de uma ajudinha, alguma ideia para resolver...
Obrigado