Making a multithread ftp server Socket problem
Hi , this will be a long one...
Im making a ftp server, briefley like this..
class server
listen on serversocket....
on new connection accept make instance to Client handler.
Each connect client has it's own handler instance witch is a Thread...
in the client handler run method..
while connected...
Read of ftp commands (implemented following the ftp standard)
every thing works good, lots of clients can connect.
Problem accours when a client wants to download / upload large files.
when it get the RETR ftp command it start a instance thread to a class upload. Here i open a new socket and sets it to the conected client adress and transfer port, sets transfermode to 'I'. Inside the read / write loop it just hangs up, i just can't see why
i've been working with this problem for some time week now
Here is a part of the upload class extending thread
Code:
class Upload
private Socket socket;
private Client client;
private String filename;
private int port;
public Upload(Client client, String file, int fport){
this.port = fport;
this.client = client;
this.filename = file;
try{
InetSocketAddress SocketAddress = new InetSocketAddress(client.getSocket().getInetAddress(), port));
socket = new Socket(client.getSocket().getInetAddress(), port);
socket.setSoTimeout(2000);
}catch(Exception e){System.out.println("Error");}
public void Run
if sendmode = aschii then..... this one works just fine
else send image / binary
// Binary send
int buffersize = 4096*2;
byte buff[] = new byte[buffersize];
int bytesread = 0;
readdata = new BufferedInputStream (new FileInputStream(filename));
writedata = new BufferedOutputStream(new DataOutputStream(socket.getOutputStream()));
socket.setSendBufferSize(buffersize);
while((bytesread = readdata.read(buff,0,buffersize)) >=0){
writedata .write(buff,0, bytesread);
writedata .flush();
}
close sockets and streams....exit thread
I've found out that it sends all types of files, as long as they are under ~32Kb of size. With bigger files it just hangs up. I have been debugging the filenames, ports and adresses seem to match. I think the fault is in my othner client class i will take a look in that. But if someone can se a error here please notify me.
Any suggestions ??
Best regards to ya all, thanks for any help.