Dúvida no envio de arquivos

Olá pessoal, tenho um socket e preciso enviar um arquivo de um programa a outro pelo socket, segue o programa que envia o arquivo:

[code]
File file;
file = new File(“miniss.png”);
ImageIO.write(mini, “png”, file);
FileInputStream fin = new FileInputStream(“miniss.png”);
FileOutputStream envia = (FileOutputStream) s.getOutputStream();
int c;
byte b[] = new byte[ 10240 ];

    while ((c = fin.read(b)) != -1){
    envia.write(b, 0, c);
    }
    envia.flush();[/code]

Agora o programa que recebe o arquivo:

[code] File file;
file = new File(“as.png”);

             FileInputStream fin = (FileInputStream) s.getInputStream();
             FileOutputStream fout = new FileOutputStream(file);
             byte b[] = new byte[ 10240 ];  
             int nBytes; 
             while ((nBytes = fin.read(b)) != -1) {
                 System.out.println("acima escreve");
             fout.write(b,0,nBytes);
             System.out.println("abaixo escreve");
             }[/code]

O problema é que quando ele da read no FileInputStream ele não continua e exibe um erro que diz connection reset.
Gostaria que alguém me ajudasse com isso e me dissesse se o que eu fiz nos programas está correto, ou o que pode ser mudado, ou deve.
Obrigado