Article View: be.comp.programming
Article #560Re: client/server file transfer in java
From: Pieter Vandewoestyne
Date: Mon, 29 Jan 2007 11:43
Date: Mon, 29 Jan 2007 11:43
124 lines
5012 bytes
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-mailReferences:
<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