M
mimisam
Hi,
I have an application which uses java socket to transfer file within 2
computers. Problem occurs when the network connection is lost during
file transfering(example, cable is loose).
In my client program, it is ok as it will show me an exception of
'Connection reset by peer' and exit the program. However in server
program, it simply stops at the read() line and hang forever. I just
wonder if there is a way for the server to catch any exception, or
detect the lost connection so that it can exit the program
automatically.
Please help! Thanks!!
I have simplified my code, the file transfering parts for client and
server are similar:
***client***
try{
Socket socket=new Socket(server,port)
out = new BufferedOutputStream(socket.getOutputStream());
fileIn = new BufferedInputStream(new FileInputStream(file));
int numRead;
byte[] buffer=new byte[1024];
//file transfering
while( (numRead = fileIn.read(buffer)) >=0)
{
out.write(buffer, 0, numRead);
}
}catch(Exception e){e.printStackTrace();}
***server***
server = new ServerSocket(port);
client = null;
while (true) {
try{
client = server.accept();
in = new BufferedInputStream(client.getInputStream());
fileout = new BufferedOutputStream(new
FileOutputStream(filedest));
byte[] buffer = new byte[1024];
int readMe;
// program hang in the 'while'loop during transfering,
// probably the in.read(buffer)
while( (readMe = in.read(buffer)) >= 0 ){
fileout.write(buffer, 0, readMe);
}
}catch(Exception e){e.printStackTrace();}
}//end while
I have an application which uses java socket to transfer file within 2
computers. Problem occurs when the network connection is lost during
file transfering(example, cable is loose).
In my client program, it is ok as it will show me an exception of
'Connection reset by peer' and exit the program. However in server
program, it simply stops at the read() line and hang forever. I just
wonder if there is a way for the server to catch any exception, or
detect the lost connection so that it can exit the program
automatically.
Please help! Thanks!!
I have simplified my code, the file transfering parts for client and
server are similar:
***client***
try{
Socket socket=new Socket(server,port)
out = new BufferedOutputStream(socket.getOutputStream());
fileIn = new BufferedInputStream(new FileInputStream(file));
int numRead;
byte[] buffer=new byte[1024];
//file transfering
while( (numRead = fileIn.read(buffer)) >=0)
{
out.write(buffer, 0, numRead);
}
}catch(Exception e){e.printStackTrace();}
***server***
server = new ServerSocket(port);
client = null;
while (true) {
try{
client = server.accept();
in = new BufferedInputStream(client.getInputStream());
fileout = new BufferedOutputStream(new
FileOutputStream(filedest));
byte[] buffer = new byte[1024];
int readMe;
// program hang in the 'while'loop during transfering,
// probably the in.read(buffer)
while( (readMe = in.read(buffer)) >= 0 ){
fileout.write(buffer, 0, readMe);
}
}catch(Exception e){e.printStackTrace();}
}//end while