Jump to content
knoker

Java Sockets, Ficheiro chega com o dobro do tamanho

Recommended Posts

knoker

Ora Boas,

tou a tentar fazer algo mt simples, uma aplicação k manda um ficheiro e outra que o recebe e guarda....

aqui vai o código

este é o código que envia o array que representa o ficheiro

    public void send(byte[] bytes) {
        if (smtpSocket != null && os != null && is != null) {
            try {
                os.writeInt(bytes.length);
                for(int i =0; i < bytes.length;i++){
                    System.out.println(i+"    -     "+bytes[i]);
                    os.writeByte(bytes[i]);
                }
                
                
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }

e aqui ta o código que o recebe e guarda

    public void recive() {
        try {
            clientSocket = echoServer.accept();
            is = new DataInputStream(clientSocket.getInputStream());
            os = new DataOutputStream(clientSocket.getOutputStream());

            out = new BufferedWriter(new FileWriter("BAM.png"));
// As long as we receive data, echo that data back to the client.
            int size = is.readInt();

            System.out.println(size);
            byte bt = 0;
            for (int i = 0; i < size; i++) {
                bt = is.readByte();
                out.write(bt);
                System.out.println(i+"    -     "+bt);
            }
            out.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }

pus alguns prints para ver o tamanho e o k ta a ser enviado / lido....

nos outputs ta td bem os tamanhos batem certos e o enviado é igual ao recebido

mas kuando vejo o ficheiro ele tem o dobro do tamanho do ficheiro original

Agradecia a voça ajuda....

Abrc

Share this post


Link to post
Share on other sites
knoker

Já vi o erro... tava a usar um BufferedWriter... e devia usar oFileOutputStream visto k n tava a lidar com texto e sim com bytes....

aki vai o código a funcionar... pode ser k sirva para alguem

    public void recive() {
        try {
            clientSocket = echoServer.accept();
            is = new DataInputStream(clientSocket.getInputStream());
            out = new FileOutputStream("Bam.png");

            //out = new BufferedWriter(new FileWriter("BAM.t"));
// As long as we receive data, echo that data back to the client.
            int size = is.readInt();

            System.out.println(size);
            byte bt = 0;
            for (int i = 0; i < size; i++) {
                bt = is.readByte();
                out.write(bt);
                System.out.println(i+"    -     "+bt);
            }
            out.close();
        } catch (IOException e) {
            System.out.println(e);
        }
    }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.