1、首先,我们创建一个用于登录FTP以进行操作的用户帐户。右键单击我的桌面并选择“管理选项”,转到“管理”界面,然后打开“本地用户和组”选项。我们可以在列表中看到用户选项。
2、然后右键单击用户选项,从下拉菜单中选择新用户,开始构建我们的用户,填写用户名和密码。描述可以留空。然后单击Create。创建后,您将在右侧的用户列表中看到我们创建的用户。
3、用户创建完成后,我们开始添加IIS程序服务。打开计算机的“开始”菜单,找到“控制面板”选项并将其打开。
4、转到控制面板界面查找程序选项,单击下面的卸载程序按钮进入安装程序列表界面。
5、转到程序和功能选项卡,我们可以看到有一个选项可以在左上角的菜单栏中打开或关闭Windows,单击进入。
6、转到Windows功能界面打开或关闭,我们擅长Internet信息服务,然后单击打开FTP服务器的前端,即勾选其子菜单的FTP服务和FTP可扩展性,然后单击按下OK按钮。
7、添加IIS服务后,开始创建我们的FTP站点,右键单击我的电脑并选择管理,然后找到服务和应用程序选项,单击打开,然后单击Internet信息服务管理 - 此时我们可以看到连接右框架。
8、单击打开连接框下方的本地主机主页,然后您可以看到应用程序池和网站选项,我们右键单击该网站以选择添加网站。
9、然后在弹出的添加网站框中输入我们的网站名称,物理路径是我们的FTP本地文件夹,我们可以在磁盘中创建新的,然后选择添加,IP地址选择我们的本地IP地址。
10、创建我们的FTP后,我们可以看到我们刚刚在网站下面创建了一个网络,右键单击网站名称,选择添加FTP站点发布,然后启动绑定和SSL设置,端口号选择2121.IP地址填写本地IP地址。
方法如下:
操作设备:戴尔笔记本电脑
操作系统:win7
操作程序:管理选项1.0
一、首先选择“管理选项”打开“本地用户和组”可以在列表中看到用户选项,如下图所示:
二、然后从下拉菜单中选择新用户,开始构建填写用户名和密码,如下图所示:
三、之后找到“控制面板”选项并将其打开,如下图所示:
四、单击下面的卸载程序按钮进入安装程序列表界面,如下图所示:
五、在左上角的菜单栏中打开或关闭Windows,单击进入,如下图所示:
六、转到Windows功能界面打开或关闭,勾选其子菜单的FTP服务和FTP可扩展性,然后单击按下OK按钮,如下图所示:
七、添加IIS服务后,单击Internet信息服务管理 - 此时我们可以看到连接右框架,如下图所示:
八、然后右键单击该网站以选择添加网站,如下图所示:
九、然后在弹出的添加网站框中输入我们的网站名称,然后选择添加,如下图所示:
十、创建我们的FTP后,启动绑定和SSL设置,端口号选择2121IP地址填写本地IP地址,如下图所示:
学习了计算机网络之后,利用java写了一个ftp服务器。一、实现的ftp命令
实现了基本的user,pass,list,port,quit,retr,cwd,stor等命令
二、以上命令所对应的功能
对应的功能是:下载,上传,获取服务器目录,切换目录等
三、用于测试的ftp客户端:windows自带的ftp客户端
四、实现的思想
1、使用ServerSocket进行监听,每个控制连接的请求到来之后,开启一个线程进行处理(这里使用的java bio,效率较差,对于控制连接最好使用NIO处理,之后会再写个
nio的实现)
2、 对于命令使用工厂方法模式进行设计,当需要添加新的命令的时候,只需要添加一个新的命令类,实现相应接口,修改工厂产生逻辑,而不用修改其他的程序代码。可
扩展性较好,同时符合开闭原则。
五、实现过程中碰到的问题
1、对于tcp与socket的关系理解错误,以为所有的数据的输入都是要经过serverSocket().accept()方法。其实,ServerSocket.accept()所对应的是tcp里面的三次握手建
立连接的阶段,之后的tcp的连接由客户端和服务器端的一对socket来维护,是属于establish阶段,在这个阶段,通信是全双工的,任何一方都能够发送数据。
socket.close()对应的阶段是断开连接(四次挥手)的阶段。
2、刚开始对于ftp协议不是很理解,不知道他的工作方式是怎样的,后来在看了tcp协议卷里面的ftp的内容之后,才知道ftp命令和应答码是关键。eg:刚开始测试时,在
输入用户名之后,不会提示输入密码的。原因:没有返回对应的应答码:331. 另外要注意的是:返回的数据要以换行回车作为结束--\r\n.
六、代码列表
简单说明:
ftpServer:是服务器的主程序,入口,同时负责监听本地的21号端口。
ControllerThread.java:用于处理控制连接的线程(每一个控制连接请求对应一个线程)ps:实在很浪费(流量小,连接多)。
Share:一些全局性数据的维护。
Command:是命令接口,定义了一个所有命令都要实现的方法。
CommandFactory:命令工厂,通过传人的参数,决定生成的命令对象。
UserCommand,PortCommand等:是具体ftp命令的实现
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)