用 java 实现FTP SERVER(附源码)
By:Roy.LiuLast updated:2012-11-11
前面用 PYTHON 实现了一个 ftp server(参考这里) ,有朋友问有没有java版本的,其实说白了,ftp 也就是 tcp/ip 协议的一个应用而已,而tcp/ip 基本都是通过socket来传输指令或数据,只要客户端和服务端定义好沟通协议就好了。FTP 是有一套标准的,只要按这套标准去做,就可以实现一个FTP服务器。
下面的程序实现了一套简单的基于java的ftp server,你可以自己加上自己需要的东西,暂时这个FTP SERVER 有如下功能:
1 一个实现了的ftp服务器基本功能程序,服务器的安全管理代码还没有开发,
但该程序已经可以适用于网络。
2 该ftp服务器还具有一些管理功能,主要是
针对用户管理的,有如下命令:
list、listuser、adduser、deluser、help、?。
list 列出连接用户信息
listuser 列出所有用户信息
adduser 新增用户
deluser 删除用户
help 显示帮助,列出以上指定
“?” 同help功能相同
3 关于用户的权限设置,还未开发,因此所有登陆的用户的都具有最高权限,
4 有2个缺省用户:
user:jxd password:111
user:good password:public
5 用户信息在同目录下的user.cfg中,
注意用户信息的书写,一个用户的信息占一行:
user|password|directory|
6 在eclipse下新建一Java项目 将FtpServer.java放入你所建的项目文件夹下,
并将user.cfg配制文件放入该项目文件夹下。
编译运行FtpServer.java 服务启动
会显示 “ftp server started!”
服务启动 即可操作指令。(部分操作指令见附件。)
7 客户端可以通过本地机操作系统自带Ftp客户端连接 ftp server.
具体操作:
开始->运行
输入 "cmd" 调出控制台
在控制台输入 ftp 192.168.1.104
即可连接 。
当连接成功会显示Connection to 192.168.1.104 //192.168.1.104为服务器的IP
并提示你当前登入服务器的人数。
然后输入你要操作的指令(部分操作指令见附件。)
当连接不成功则会显示 Unknown host 192.168.1.104
服务器端的部分指令例子:
客户端指令例子:
源代码,打包如下,有兴趣的可以下载:
点击下载此文件
下面的程序实现了一套简单的基于java的ftp server,你可以自己加上自己需要的东西,暂时这个FTP SERVER 有如下功能:
1 一个实现了的ftp服务器基本功能程序,服务器的安全管理代码还没有开发,
但该程序已经可以适用于网络。
2 该ftp服务器还具有一些管理功能,主要是
针对用户管理的,有如下命令:
list、listuser、adduser、deluser、help、?。
list 列出连接用户信息
listuser 列出所有用户信息
adduser 新增用户
deluser 删除用户
help 显示帮助,列出以上指定
“?” 同help功能相同
3 关于用户的权限设置,还未开发,因此所有登陆的用户的都具有最高权限,
4 有2个缺省用户:
user:jxd password:111
user:good password:public
5 用户信息在同目录下的user.cfg中,
注意用户信息的书写,一个用户的信息占一行:
user|password|directory|
6 在eclipse下新建一Java项目 将FtpServer.java放入你所建的项目文件夹下,
并将user.cfg配制文件放入该项目文件夹下。
编译运行FtpServer.java 服务启动
会显示 “ftp server started!”
服务启动 即可操作指令。(部分操作指令见附件。)
7 客户端可以通过本地机操作系统自带Ftp客户端连接 ftp server.
具体操作:
开始->运行
输入 "cmd" 调出控制台
在控制台输入 ftp 192.168.1.104
即可连接 。
当连接成功会显示Connection to 192.168.1.104 //192.168.1.104为服务器的IP
并提示你当前登入服务器的人数。
然后输入你要操作的指令(部分操作指令见附件。)
当连接不成功则会显示 Unknown host 192.168.1.104
服务器端的部分指令例子:
->adduser please enter username:jxd enter password :public enter the initial directory: d ->list 1:jxd From /192.168.1.104 ->listuser username workdirectory ruan e:/incoming wen d:/incoming ->? adduser :add new user deluser:delete a user quit :quit list :list all user connect to server listuser : list all account of this server help :show this help ->help adduser :add new user deluser :delete a user quit :quit list :list all user connect to server listuser : list all account of this server help :show this help ->deluser jxd User jxd deleted
客户端指令例子:
ftp> ? Commands may be abbreviated. Commands are: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir ftp> ! Microsoft Windows XP [版本 5.1.2600] (C) 版权所有 1985-2001 Microsoft Corp. ftp> DELE dd.txt 250 Request file action ok,complete ftp> literal Command line to send Usage: literal line to send. ftp> prompt Interactive mode Off . ftp> send Local file d:\22.txt Remote file d:\incoming\22.txt ftp> debug Debugging On . ftp> ls ---> PORT 192,168,1,104,5,244 200 Command okay ---> NLST 200 Command okay ftp> put Local file c:001.txt Remote file d:\incoming ftp> get 1222.txt 200 Command okay 150 Opening Binary mode data connection for d:\incoming/1222.txt 226 Transfer complete ! ftp> status Connected to 192.168.1.104. Type: ascii; Verbose: On ; Bell: Off ; Prompting: Off ; Globbing: On Debugging: Off ; Hash mark printing: Off . ftp> append Local file c:\ Remote file d:\incoming ftp> dir 200 Command okay 150 Opening ASCII mode data connection for /bin/ls. d aa - FtpServer.java d mkd 226 Transfer complete ! ftp: 收到 31 字节,用时 0.00Seconds 31000.00Kbytes/sec. ftp> mdelete Remote files ff.txt 200 Command okay Change to ASCII mode ftp> pwd 257 d:\incoming is current directory. ftp> ascii 200 Command okay Change to ASCII mode ftp> mdir Remote files incoming\ff.txt Local file c:\001.txt output to local-file: c:\001.txt? 200 Command okay 226 Transfer complete ! ftp> recv Remote file ff.txt Local file C:\Documents and Settings\jxd 200 Command okay 150 Opening Binary mode data connection for d:\incoming/ff.txt 226 Transfer complete ! ftp> verbose Verbose mode Off . ftp> bye C:\Documents and Settings\jxd> ftp> hash Hash mark printing On ftp: (2048 bytes/hash mark) . ftp> mls Remote files - Local file - 200 Command okay 200 Command okay ftp> remotehelp 200 Command okay ftp> cd Remote directory d:\incoming 250 Requested file action okay, directory change to d:\incoming ftp> help Commands may be abbreviated. Commands are: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir ftp> mput Local files c:\001.txt mput c:\001.txt? 200 Command okay 150 Opening Binary mode data connection for d:\incoming/001.txt 226 Transfer complete ! ftp> rename From name d:\incoming\001.txt To name 99.txt 226 Transfer complete ! ftp> Lcd Local directory now C:\Documents and Settings\jxd. ftp> open Already connected to 192.168.1.104, use disconnect first. ftp> rmdir Directory name 目录名字 ftp> close 221 Service closing control connection
源代码,打包如下,有兴趣的可以下载:
点击下载此文件
From:一号门
Previous:用python 读写excel文件(附资料下载)
COMMENTS