Apache FTPServer配置问题总结

Apache FTP Server环境搭建-个人总结

前记

前段时间换了一台台式机,因此需要从笔记本中拷贝一些以前的资料。但是由于自己并没有比较大的硬盘,因此想到搭建FTP服务器。以前用过微软一款Serv-U服务器,配置超级繁琐,用的超级不爽。网上查找后发现Apache FTP Server开源,可配置选项多,因此就选择了它。

软件下载、解压

Apache FTP Server网站下载1.0.6Release版本后解压到本地文件夹。(个人文件夹:D:\tools\apache-ftpserver-1.0.6,后面以%FTP_Server%代替)。文件夹包括三个上子文件夹,重点关注bin、res文件夹即可。

下载地址:http://mina.apache.org/ftpserver/downloads.html

软件配置

  • Java环境安装

  • 安装Service

    以命令行方式进入%FTP_PATH%\bin目录,运行service.bat命令
    service install最好以管理员权限运行,否则易导致安装失败
    安装好后,能在电脑服务中找到Apache FTPServer

  • 配置
    %FTP_Server%\res\conf 文件夹下有ftpd_typical.xml、users.properties两个文件,简要说明下。

    XML文件配置了以下几项:密码明文管理,端口为21号端口。
    users.properties配置用户:包括密码、上传速度等。这个网上很多说明,简要地附上以下说明。

    #FTP用户名:myusername,密码:12345678(上文设置成明文保存)
    ftpserver.user.myusername.userpassword=12345678#FTP主目录
    ftpserver.user.myusername.homedirectory=./ftp_space
    ftpserver.user.myusername.enableflag=true
    ftpserver.user.myusername.writepermission=true
    ftpserver.user.myusername.maxloginnumber=3
    ftpserver.user.myusername.maxloginperip=3
    ftpserver.user.myusername.idletime=0
    ftpserver.user.myusername.uploadrate=0
    ftpserver.user.myusername.downloadrate=0
  • 启动
    命令行方式直接启动,注意加上刚才修改的配置文件。以我的配置为例:
    ftpd.bat res/conf/ftpd-typical.xml
    (可以保存一个BAT文件,方便启动)
    但是个人使用的环境:Win7 64位似乎存在问题,所以按照下博客方法顺利解决,谢谢这位博主
    Apache FtpServer在64位系统下服务不能启动解决方法:http://zuoqiang.iteye.com/blog/1557988

    实验

    今天通过台式机与笔记本做传输测试,发现速度很快,平均在10M/S以下(局域网环境)。
    配置过程中主要遇到以下几个问题:

  • 服务无法启动
  • 21号端口无法启动
    端口查看命令:netstat -aon | findstr “61616”
    任务查看命令:tasklist /fi “pid eq PID”(查看pid进程)
    任务结束命令:tskill pid

      Using XML configuration file res/conf/ftpd-typical.xml...
      org.apache.ftpserver.FtpServerConfigurationException: Failed to bind to address 0.0.0.0/0.0
              at org.apache.ftpserver.listener.nio.NioListener.start(NioListener.java:181)
              at org.apache.ftpserver.impl.DefaultFtpServer.start(DefaultFtpServer.java:80)
              at org.apache.ftpserver.main.CommandLine.main(CommandLine.java:62)
      Caused by: java.net.BindException: Address already in use: bind
              at sun.nio.ch.Net.bind0(Native Method)
              at sun.nio.ch.Net.bind(Net.java:444)
              at sun.nio.ch.Net.bind(Net.java:436)
              at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
              at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
              at org.apache.mina.transport.socket.nio.NioSocketAcceptor.open(NioSocketAcceptor.ja
              at org.apache.mina.transport.socket.nio.NioSocketAcceptor.open(NioSocketAcceptor.ja
              at org.apache.mina.core.polling.AbstractPollingIoAcceptor.registerHandles(AbstractP
              at org.apache.mina.core.polling.AbstractPollingIoAcceptor.access$300(AbstractPollin
              at org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPoll
              at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:745)
    

    接下来的工作:

  • 对配置文件深入了解
  • 暂时匿名登陆仍未配置成功

-------------------------------

这博客排版太坑爹了,如果大家有什么好的方法,非常希望能留言告诉我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Apache FtpServer是一个开源的、灵活的、可扩展的FTP服务器软件,可以用Java语言编写,支持多种操作系统平台。在Apache FtpServer中,可以通过实现FTP文件传输监听器来获取上传和下载文件的进度。 下面是一个获取上传进度的示例代码: ```java public class MyFtpListener implements FtpFileUploadListener { private long totalBytes = 0L; private long transferredBytes = 0L; private FtpIoSession ftpSession; public MyFtpListener(FtpIoSession ftpSession) { this.ftpSession = ftpSession; } public void fileUploadStarted(FtpIoSession session, FtpFileUploadRequest request) { totalBytes = request.getFileItem().getSize(); transferredBytes = 0L; } public void fileUploadProgress(FtpIoSession session, FtpFileUploadRequest request, long transferredBytes) { this.transferredBytes = transferredBytes; float progress = (float)transferredBytes / (float)totalBytes * 100.0f; ftpSession.write(new DefaultFtpReply(FtpReply.REPLY_226_CLOSING_DATA_CONNECTION, String.format("%.2f%%", progress))); } public void fileUploadFinished(FtpIoSession session, FtpFileUploadRequest request) { ftpSession.write(new DefaultFtpReply(FtpReply.REPLY_226_CLOSING_DATA_CONNECTION, "Upload finished.")); } //省略其它方法... } ``` 在上面的代码中,我们实现了FtpFileUploadListener接口,重写了fileUploadStarted、fileUploadProgress和fileUploadFinished三个方法,其中fileUploadProgress方法用于获取上传文件的进度信息,通过FTP会话对象ftpSession将进度信息发送给客户端。 在实际使用中,我们可以通过配置FTP服务器的监听器来注册上面的MyFtpListener,如下所示: ```java listenerFactory.setFtpFileUploadListener(new MyFtpListener(session)); ``` 这样,在客户端上传文件时,就可以实时获取上传进度信息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值