Hola buenas. Vereis, estoy haciendo un pequeño programa con sockets en java para transferir un fichero binario (una cancion). El servidor le envia al cliente el tamaño por un flujo de texto para que el cliente vaya recibiendo bytes del fichero hasta completar el tamaño. La cosa es que me da error de cliente y no se porque. Llevo 3 dias dandole vueltas y nada, me estoy volviendo loco. Ahi os dejo el codigo por si quereis ayudarme. Muchas gracias:
Servidor
======
import java.net.*;
import java.io.*;
class Servidor{
public static void main(String[] args){
try{
ServerSocket sSrv=new ServerSocket(7777);
File fich= new File("blur.mp3");
FileInputStream fichEntrada=new FileInputStream(fich);
int paquete;
long tamanioFichero=fich.length();
while (true){
Socket sCli=sSrv.accept();
System.out.println("Cliente ha conectado");
PrintWriter salidaTexto=new PrintWriter(sCli.getOutputStream(),true);
DataOutputStream salidaBinario = new DataOutputStream(sCli.getOutputStream());
salidaTexto.print(tamanioFichero);
while((paquete=(byte)fichEntrada.read())!=-1){
salidaBinario.write(paquete);
}
fichEntrada.close();
sCli.close();
System.out.println("Cliente ha desconectado");
}
}
catch (IOException e){
System.out.println("Error en servidor");}
}
}
Cliente
=====
import java.net.*;
import java.io.*;
class Cliente {
public static void main(String[] args) {
try {
File fich= new File("blur.mp3");
FileOutputStream fichSalida=new FileOutputStream(fich);
Socket sCli=new Socket("localhost",7777);
System.out.println("Cliente ha conectado");
BufferedReader entradaTexto=new BufferedReader(new InputStreamReader(sCli.getInputStream()));
DataInputStream entradaBinario = new DataInputStream(sCli.getInputStream());
long tamanioFichero=entradaTexto.read();
int paquete;
for(int i=0; i<20; i++){//tamanioFichero; i++){
paquete = entradaBinario.readByte();
fichSalida.write(paquete);
}
fichSalida.close();
sCli.close();
}
catch (UnknownHostException e){
System.out.println("HOst desconocido");}
catch (IOException e){
System.out.println("Error en cliente");}
}}
EDIT: se me olvido decir que el cliente y servidor estan en carpetas distintas, por eso no es el problema.