Hello, What does your log say?
2011/7/28 Fabio Melo <fabio.f...@gmail.com> > Hi All, > > I'm facing some problem while coding a server server using Apache FTP > server. > > I'm using the code bellow to create a FTP server (MyFTPServer), when a run > this piece of code I'm not able to connect through a FTP client such as > Filezilla, WinSCP and My own FTP client into my ftp server. > > There is also bellow My FTP Client which represent my FTP Client code for > connect. > > Does any body knows what I am doing wrong? > > Thanks in advance > > ==================== MyFTPServer================= > import java.io.File; > import java.io.FileOutputStream; > import java.io.IOException; > import java.io.OutputStream; > import java.util.ArrayList; > import java.util.HashMap; > import java.util.List; > > import org.apache.ftpserver.FtpServer; > import org.apache.ftpserver.FtpServerFactory; > import org.apache.ftpserver.ftplet.Authority; > import org.apache.ftpserver.ftplet.DataConnection; > import org.apache.ftpserver.ftplet.DefaultFtpReply; > import org.apache.ftpserver.ftplet.DefaultFtplet; > import org.apache.ftpserver.ftplet.FtpException; > import org.apache.ftpserver.ftplet.FtpReply; > import org.apache.ftpserver.ftplet.FtpRequest; > import org.apache.ftpserver.ftplet.FtpSession; > import org.apache.ftpserver.ftplet.Ftplet; > import org.apache.ftpserver.ftplet.FtpletResult; > import org.apache.ftpserver.ftplet.UserManager; > import org.apache.ftpserver.impl.LocalizedFtpReply; > import org.apache.ftpserver.listener.ListenerFactory; > import org.apache.ftpserver.ssl.SslConfigurationFactory; > import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; > import org.apache.ftpserver.usermanager.SaltedPasswordEncryptor; > import org.apache.ftpserver.usermanager.impl.BaseUser; > import org.apache.ftpserver.usermanager.impl.WritePermission; > > public class FTPServerTest extends DefaultFtplet { > public FTPServerTest() { > try { > FtpServerFactory serverFactory = new FtpServerFactory(); > PropertiesUserManagerFactory userManagerFactory = new > PropertiesUserManagerFactory(); > ListenerFactory factory = new ListenerFactory(); > factory.setPort(2221); > userManagerFactory.setFile(new File("myusers.properties")); > userManagerFactory.setPasswordEncryptor(new SaltedPasswordEncryptor()); > UserManager um = userManagerFactory.createUserManager(); > BaseUser user = new BaseUser(); > // define SSL configuration > SslConfigurationFactory ssl = new SslConfigurationFactory(); > ssl.setKeystoreFile(new File("ftpserver.jks")); > ssl.setKeystorePassword("password"); > // set the SSL configuration for the listener > factory.setSslConfiguration(ssl.createSslConfiguration()); > factory.setImplicitSsl(false); > List<Authority> authorities = new ArrayList<Authority>(); > authorities.add(new WritePermission()); > user.setAuthorities(authorities); > user.setName("myNewUser"); > user.setPassword("secret"); > um.save(user); > serverFactory.setUserManager(um); > serverFactory.addListener("default", factory.createListener()); > HashMap<String, Ftplet> ftplets = new HashMap<String, Ftplet>(0); > ftplets.put("DEFAULT", this); > serverFactory.setFtplets(ftplets); > // start the server > FtpServer server = serverFactory.createServer(); > server.start(); > > } catch (FtpException e) { > e.printStackTrace(); > } > } > > public static void main(String[] args) { > new FTPServerTest(); > } > > @Override > public FtpletResult onConnect(FtpSession session) throws FtpException, > IOException { > System.out.println("onConnect"); > return super.onConnect(session); > } > > @Override > public FtpletResult onLogin(FtpSession session, FtpRequest request) > throws FtpException, IOException { > System.out.println("onLogin"); > return super.onLogin(session, request); > } > @Override > public FtpletResult onUploadStart(FtpSession session, FtpRequest request) > throws FtpException, IOException { > String requestedFile = request.getArgument(); > > OutputStream in = new FileOutputStream(requestedFile); > > > // open data connection > DataConnection out = null; > session.write(new DefaultFtpReply(150, "Getting data connection.")); > try { > out = session.getDataConnection().openConnection(); > } catch (Exception ex) { > System.out.println("Exception"); > } > if (out == null) { > System.out.println("onUpload - out null"); > return FtpletResult.SKIP; > } > > // transfer data > try { > > > out.transferFromClient(session,in); > } finally { > session.write(new DefaultFtpReply(226, "Transfer Complete.")); > session.getDataConnection().closeDataConnection(); > in.close(); > } > System.out.println("onUpload - end"); > return FtpletResult.SKIP; > } > @Override > public FtpletResult onUploadEnd(FtpSession session, FtpRequest request){ > System.out.println("fim do up"); > return FtpletResult.DEFAULT; > } > } > > ========================My FTP > Client================================================ > > import java.io.FileInputStream; > import java.io.IOException; > import java.net.SocketException; > > import org.apache.commons.net.ftp.FTPClient; > import org.apache.commons.net.ftp.FTPFile; > > > public class FTPClientTest { > > public static void main(String[] args) { > try { > FTPClient ftpClient = new FTPClient(); > //connect and login > > ftpClient.connect("127.0.0.1", 2221); > ftpClient.login("myNewUser", "secret"); > > //file > FileInputStream fis = null; > String filename = "README.txt"; > fis = new > FileInputStream("C:\\Users\\fam2\\Desktop\\README.txt"); > ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); > > // > // Store file to server > // > ftpClient.storeFile(filename, fis); > // System.out.println("Okay"); > fis.close(); > ftpClient.disconnect(); > } catch (Exception e) { > e.printStackTrace(); > } > } > > > } >