🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #560

Re: client/server file transfer in java

#560
From: Pieter Vandewoestyne
Date: Mon, 29 Jan 2007 11:43
124 lines
5012 bytes
Ik heb het kunnen oplossen, maar nu zit ik met een ander probleem:
Wanneer ik meerdere files selecteer om te backuppen naar mijn server, 
schrijft hij enkel de eerste file weg, daarna hangt de applicatie vast en 
wordt er geen verdere code uitgevoerd.
Hieronder mijn code:

CLIENT-code
----------------
    private void btnBackupActionPerformed(java.awt.event.ActionEvent evt) {

        for (File f:backupfileslist) {

            try{

                client.sendMessage("Make Backup");
                System.out.println(f);

                String remoteFilename = f.getAbsolutePath();
                String localFilename = f.getAbsolutePath();
                InputStream socketIn = client.getLink().getInputStream();
                DataOutputStream socketOut = new 
DataOutputStream(client.getLink().getOutputStream());
                FileInputStream fis = new FileInputStream(localFilename);

                //writethe filename
                socketOut.writeUTF(remoteFilename);

                int bytesRead;
                byte[] buffer = new byte[3000];


              // write out the file
                while((bytesRead = fis.read(buffer, 0, buffer.length)) >= 0) 
{
                    socketOut.write(buffer, 0, bytesRead);
                    socketOut.flush();
                }

                fis.close();

            } catch (FileNotFoundException ex) {
                ex.printStackTrace();

            } catch (IOException ioe){
                ioe.printStackTrace();
            }
        }

    }


SERVER-code
-----------------

    public void checkMessage(String sMessage) {

        if (sMessage.startsWith("Make Backup")){

            try{

                // for reading the filename
                socketIn = new 
DataInputStream(clientSocket.getInputStream());

                //read the filename
                String filename = socketIn.readUTF();
                String remotefilename = filename.substring(3);
                String remotefilepath = "D:\\" + remotefilename;

                System.out.println("Sending file " + remotefilepath);

                // write the file
                FileOutputStream fos = new FileOutputStream(remotefilepath);

                int data;
                int totalDataRead;
                byte[] buffer = new byte[3000];
                boolean isLastPacket = false;


                // read file byte per byte
                totalDataRead =  socketIn.read(buffer, 0, buffer.length);

                if(totalDataRead >= 1024){
                    while (totalDataRead != -1) {
                        // write data
                        fos.write(buffer,0, totalDataRead);
                        fos.flush();

                        if(!isLastPacket){
                            totalDataRead =  socketIn.read(buffer, 0, 
buffer.length);
                            if (totalDataRead < 1024) {
                                isLastPacket = true;
                            }
                        } else {
                            totalDataRead = -1;
                            isLastPacket = false;
                        }
                    }
                } else {
                    fos.write(buffer,0, totalDataRead);
                    fos.flush();
                }

                clientSocket.close();
                socketIn.close();
                fos.close();

            }catch(Exception ex){
                System.out.println("file transfer failed");
            }

            System.out.println("File transfer complete");

        }

    }

-----------------------------------------------

Iemand die ziet wat ik hier verkeerd doe?
Groetjes,
Pieter 
Technical Details
Message-ID: <j5lvh.315673$w44.6225074@phobos.telenet-ops.be>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!homer!news.glorb.com!news-spur1.glorb.com!news.glorb.com!news2.euro.net!amsnews11.chello.com!feeder1.cambrium.nl!feed.tweaknews.nl!hwmnpeer01.ams!news.highwinds-media.com!kramikske.telenet-ops.be!nntp.telenet.be!kwabbernoot.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
References: <r3rsh.300661$W33.6038622@phobos.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,4e7fc654d96d4a4a
X-Google-Attributes: gidfcea4,public
X-Google-Language: ENGLISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!homer!news.glorb.com!news-spur1.glorb.com!news.glorb.com!news2.euro.net!amsnews11.chello.com!feeder1.cambrium.nl!feed.tweaknews.nl!hwmnpeer01.ams!news.highwinds-media.com!kramikske.telenet-ops.be!nntp.telenet.be!kwabbernoot.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
From: "Pieter Vandewoestyne" <pieter.vandewoestyne@howest.be>
Newsgroups: be.comp.programming
References: <r3rsh.300661$W33.6038622@phobos.telenet-ops.be>
Subject: Re: client/server file transfer in java
Lines: 126
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.3028
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
X-RFC2646: Format=Flowed; Response
Message-ID: <j5lvh.315673$w44.6225074@phobos.telenet-ops.be>
Date: Mon, 29 Jan 2007 11:43:11 GMT
NNTP-Posting-Host: 213.118.85.47
X-Complaints-To: abuse@telenet.be
X-Trace: phobos.telenet-ops.be 1170070991 213.118.85.47 (Mon, 29 Jan 2007 12:43:11 MET)
NNTP-Posting-Date: Mon, 29 Jan 2007 12:43:11 MET
Organization: Telenet Internet