欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年用Java实现FTP服务器解决方案Java教程.docx

    • 资源ID:62201144       资源大小:14.74KB        全文页数:12页
    • 资源格式: DOCX        下载积分:9.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年用Java实现FTP服务器解决方案Java教程.docx

    2022年用Java实现FTP服务器解决方案Java教程FTP 吩咐FTP 的主要操作都是基于各种吩咐基础之上的。常用的吩咐有:· 设置传输模式,它包括ASC(文本) 和BINARY 二进制模式;· 书目操作,变更或显示远程计算机的当前书目(cd、dir/ls 吩咐);· 连接操作,open吩咐用于建立同远程计算机的连接;close吩咐用于关闭连接;· 发送操作,put吩咐用于传送文件到远程计算机;mput 吩咐用于传送多个文件到远程计算机;· 获得操作,get吩咐用于接收一个文件;mget吩咐用于接收多个文件。编程思路依据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端恳求,一旦客户端恳求被接受,服务器程序就建立一个服务器分线程,处理客户端的吩咐。假如客户端须要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。编程技巧说明1.主函数设计在主函数中,完成服务器端口的侦听和服务线程的创建。我们利用一个静态字符串变量initDir 来保存服务器线程运行时所在的工作书目。服务器的初始工作书目是由程序运行时用户输入的,缺省为C盘的根书目。详细的代码如下:public class ftpServer extends Thread&#123;private Socket socketClient;private int counter;private static String initDir;public static void main(String args)&#123;if(args.length != 0) &#123;initDir = args0;&#125;else&#123; initDir = "c:"&#125;int i = 1;try&#123;System.out.println("ftp server started!");/监听21号端口ServerSocket s = new ServerSocket(21);for(;)&#123;/接受客户端恳求Socket incoming = s.accept();/创建服务线程new ftpServer(incoming,i).start();i+;&#125;&#125;catch(Exception e)&#123;&#125;&#125;2. 线程类的设计线程类的主要设计都是在run()方法中实现。用run()方法得到客户端的套接字信息,依据套接字得到输入流和输出流,向客户端发送欢迎信息。3. FTP 吩咐的处理(1) 访问限制吩咐· user name(user) 和 password (pass) 吩咐处理代码如下:if(str.startsWith("USER")&#123;user = str.substring(4);user = user.trim();out.println("331 Password");&#125;if(str.startsWith("PASS")out.println("230 User "+user+" logged in.");User 吩咐和 Password 吩咐分别用来提交客户端用户输入的用户名和口令。· CWD (CHANGE WORKING DIRECTORY) 吩咐处理代码如下:if(str.startsWith("CWD")&#123;String str1 = str.substring(3);dir = dir+"/"+str1.trim();out.println("250 CWD command succesful");&#125;该吩咐变更工作书目到用户指定的书目。· CDUP (CHANGE TO PARENT DIRECTORY) 吩咐处理代码如下:if(str.startsWith("CDUP")&#123;int n = dir.lastIndexOf("/");dir = dir.substring(0,n);out.println("250 CWD command succesful");&#125;该吩咐变更当前书目为上一层书目。· QUIT吩咐处理代码如下:if(str.startsWith("QUIT") &#123;out.println("GOOD BYE");done = true;&#125;该吩咐退出及关闭与服务器的连接,输出GOOD BYE。(2) 传输参数吩咐· Port吩咐处理代码如下:if(str.startsWith("PORT") &#123;out.println("200 PORT command successful");int i = str.length() - 1;int j = str.lastIndexOf(",");int k = str.lastIndexOf(",",j-1);String str1,str2;str1=""str2=""for(int l=k+1;lstr1 = str2 + str.charAt(l);&#125;for(int l=j+1;l&lt;=i;l+)&#123;str2 = str2 + str.charAt(l);&#125;tempPort = Integer.parseInt(str1) * 16 *16 +Integer.parseInt(str2);&#125;运用该吩咐时,客户端必需发送客户端用于接收数据的32位IP 地址和16位 的TCP 端口号。这些信息以8位为一组,运用十进制传输,中间用逗号隔开。· TYPE吩咐处理代码如下:if(str.startsWith("TYPE")&#123;out.println("200 type set");&#125;TYPE 吩咐用来完成类型设置。(3) FTP 服务吩咐· RETR (RETEIEVE) 和 STORE (STORE)吩咐处理的代码if(str.startsWith("RETR")&#123;out.println("150 Binary data connection");str = str.substring(4);str = str.trim();RandomAccessFile outFile = newRandomAccessFile(dir+"/"+str,"r");Socket tempSocket = new Socket(host,tempPort);OutputStream outSocket = tempSocket.getOutputStream();byte byteBuffer= new byte1024;int amount;try&#123;while(amount = outFile.read(byteBuffer) != -1)&#123;outSocket.write(byteBuffer, 0, amount);&#125;outSocket.close();out.println("226 transfer complete");outFile.close();tempSocket.close();&#125;catch(IOException e)&#123;&#125;&#125;if(str.startsWith("STOR")&#123;out.println("150 Binary data connection");str = str.substring(4);str = str.trim();RandomAccessFile inFile = newRandomAccessFile(dir+"/"+str,"rw");Socket tempSocket = new Socket(host,tempPort);InputStream inSocket = tempSocket.getInputStream();byte byteBuffer = new byte1024;int amount;try&#123;while(amount =inSocket.read(byteBuffer) )!= -1)&#123;inFile.write(byteBuffer, 0, amount);&#125;inSocket.close();out.println("226 transfer complete");inFile.close();tempSocket.close();&#125;catch(IOException e)&#123;&#125;&#125;文件传输吩咐包括从服务器中获得文件RETR和向服务器中发送文件STOR,这两个吩咐的处理特别类似。处理RETR吩咐时,首先得到用户要获得的文件的名称,依据名称创建一个文件输入流,然后和客户端建立临时套接字连接,并得到一个输出流。随后,将文件输入流中的数据读出并借助于套接字输出流发送到客户端,传输完毕以后,关闭流和临时套接字。STOR 吩咐的处理也是同样的过程,只是方向正好相反。· DELE (DELETE)吩咐处理代码如下:if(str.startsWith("DELE")&#123;str = str.substring(4);str = str.trim();File file = new File(dir,str);boolean del = file.delete();out.println("250 delete command successful");&#125;DELE 吩咐用于删除服务器上的指定文件。· LIST吩咐处理代码如下:if(str.startsWith("LIST") &#123;try&#123;out.println("150 ASCII data");Socket tempSocket = new Socket(host,tempPort);PrintWriter out2= new PrintWriter(tempSocket.getOutputStream(),true);File file = new File(dir);String dirStructure = new String;dirStructure= file.list();String strType=""for(int i=0;iif( dirStructurei.indexOf(".") = -1) &#123; strType = "d "&#125;else&#123;strType = "- "&#125;out2.println(strType+dirStructurei);&#125;tempSocket.close();out.println("226 transfer complete");&#125;catch(IOException e)&#123;&#125;LIST 吩咐用于向客户端返回服务器中工作书目下的书目结构,包括文件和书目的列表。处理这个吩咐时,先创建一个临时的套接字向客户端发送书目信息。这个套接字的目的端口号缺省为1,然后为当前工作书目创建File 对象,利用该对象的list()方法得到一个包含该书目下全部文件和子书目名称的字符串数组,然后依据名称中是否含有文件名中特有的“.”来区分书目和文件。最终,将得到的名称数组通过临时套接字发送到客户端。 2022年5月13日 2022年5月13日 2022年5月13日 2022年5月12日 2022年5月12日 2022年5月12日 2022年5月12日 2022年6月23日 2022年3月30日 2022年3月30日 2022年3月30日 2022年3月30日 <br

    注意事项

    本文(2022年用Java实现FTP服务器解决方案Java教程.docx)为本站会员(w****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开