//////////////////////////////////////////////////////////////////////////////// // STORcomm class. // //////////////////////////////////////////////////////////////////////////////// import java.net.*; import java.io.*; class STORcomm extends ftpFunc { public void start(ftpState sessionState) { System.out.println("STORobj started!!"); DataInputStream recvBuf = null; // Leitura. Socket tSocket = null; // Data connection. File listFile = null; // Para testar o arquivo. if(sessionState.param == null) { try { //-------------------------------------------------------------------- // Mensagem de arquivo inexistente. sessionState.sendMesg.writeBytes("550 Nome do arquivo não especificado.\r\n"); sessionState.sendMesg.flush(); } catch (IOException e) { System.out.println(e); } return; } else { //-------------------------------------------------------------------- // Para verificar se o diretório corrente é válido. listFile = new File(sessionState.rootPath,sessionState.path); } FileOutputStream writeFile = null; //----------------------------------------------------------------------------------- // Recebe o arquivo. // if(listFile.exists() && listFile.isDirectory()) { //-------------------------------------------------------------------- // Grava a mensagem da data connection. try { sessionState.sendMesg.writeBytes("150 Abrindo conexão binária.\r\n"); sessionState.sendMesg.flush(); // Cria o socket. tSocket = new Socket(sessionState.remoteInetAddress, 2222);//sessionState.remotePort); // Input stream. recvBuf = new DataInputStream(new BufferedInputStream(tSocket.getInputStream())); } catch (UnknownHostException e) { System.out.println("Don't know about host."); } catch (IOException e) { System.out.println(e); } try { writeFile = new FileOutputStream(sessionState.rootPath+sessionState.path+sessionState.param); int byteValue; //--------------------------------------------------------------- // Envia o arquivo. while(true) { byteValue = recvBuf.readByte(); writeFile.write(byteValue); } } catch (EOFException e) { try { //--------------------------------------------------------------- // Termina a conexão de dado. writeFile.close(); tSocket.close(); // Envia mensagem de transmissão terminada. sessionState.sendMesg.writeBytes("226 Transferência efetuada.\r\n"); sessionState.sendMesg.flush(); } catch (IOException e2) { System.out.println(e2); } } catch (IOException e) { System.out.println(e); try { //--------------------------------------------------------------- // Mensagem de arquivo inexistente. sessionState.sendMesg.writeBytes("550 Não pude gravar o arquivo.\r\n"); sessionState.sendMesg.flush(); } catch (IOException e2) { System.out.println(e2); } } } else { try { //--------------------------------------------------------------- // Mensagem de arquivo inexistente. sessionState.sendMesg.writeBytes("550 Não pude gravar o arquivo.\r\n"); sessionState.sendMesg.flush(); } catch (IOException e) { System.out.println(e); } } } }