知识大全 使用Java实现FTP服务器

Posted 命令

篇首语:仓廪实则知礼节,衣食足则知荣辱。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Java实现FTP服务器相关的知识,希望对你有一定的参考价值。

使用Java实现FTP服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

    FTP是Internet 上用来传送文件的协议 在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download) FTP是实时联机服务 在使用它之前必须是具有该服务的一个用户(用户名和口令) 工作时客户端必须先登录到作为服务器一方的计算机上 用户登录后可以进行文件搜索和文件传送等有关操作 如改变当前工作目录 列文件目录 设置传输参数及传送文件等 使用FTP可以传送所有类型的文件 如文本文件 二进制可执行文件 图象文件 声音文件和数据压缩文件等     FTP 命令    FTP 的主要操作都是基于各种命令基础之上的 常用的命令有     ◆ 设置传输模式 它包括ASCⅡ(文本) 和BINARY 二进制模式     ◆ 目录操作 改变或显示远程计算机的当前目录(cd dir/ls 命令)     ◆ 连接操作 open命令用于建立同远程计算机的连接 close命令用于关闭连接     ◆ 发送操作 put命令用于传送文件到远程计算机 mput 命令用于传送多个文件到远程计算机     ◆ 获取操作 get命令用于接收一个文件 mget命令用于接收多个文件     编程思路    根据FTP的工作原理 在主函数中建立一个服务器套接字端口 等待客户端请求 一旦客户端请求被接受 服务器程序就建立一个服务器分线程 处理客户端的命令 如果客户端需要和服务器端进行文件的传输 则建立一个新的套接字连接来完成文件的操作     编程技巧说明    主函数设计    在主函数中 完成服务器端口的侦听和服务线程的创建 我们利用一个静态字符串变量initDir 来保存服务器线程运行时所在的工作目录 服务器的初始工作目录是由程序运行时用户输入的 缺省为C盘的根目录     具体的代码如下     public class ftpServer extends Thread    private Socket socketClient;    private int counter;    private static String initDir;    public static void main(String[] args)    if(args length != )     initDir = args[ ];    else initDir = c: ;    int i = ;    try    System out println( ftp server started! )     //监听 号端口    ServerSocket s = new ServerSocket( )     for( )    //接受客户端请求    Socket ining = s accept()     //创建服务线程    new ftpServer(ining i) start()     i++;        catch(Exception e)        线程类的设计    线程类的主要设计都是在run()方法中实现 用run()方法得到客户端的套接字信息 根据套接字得到输入流和输出流 向客户端发送欢迎信息     FTP命令的处理    ( ) 访问控制命令    ◆ user name(user) 和 password (pass) 命令处理代码如下     if(str startsWith( USER ))    user = str substring( )     user = user trim()     out println( Password )     if(str startsWith( PASS ))    out println( User +user+ logged in )     User 命令和 Password 命令分别用来提交客户端用户输入的用户名和口令     ◆ CWD (CHANGE WORKING DIRECTORY) 命令处理代码如下     if(str startsWith( CWD ))    String str = str substring( )     dir = dir+ / +str trim()     out println( CWD mand succesful )     该命令改变工作目录到用户指定的目录     ◆ CDUP (CHANGE TO PARENT DIRECTORY) 命令处理代码如下     if(str startsWith( CDUP ))    int n = dir lastIndexOf( / )     dir = dir substring( n)     out println( CWD mand succesful )     该命令改变当前目录为上一层目录     ◆ QUIT命令处理代码如下     if(str startsWith( QUIT ))     out println( GOOD BYE )     done = true;    该命令退出及关闭与服务器的连接 输出GOOD BYE     ( ) 传输参数命令    ◆ Port命令处理代码如下     if(str startsWith( PORT ))     out println( PORT mand successful )     int i = str length() ;    int j = str lastIndexOf( )     int k = str lastIndexOf( j )     String str str ;str = ;    str = ;for(int l=k+ ;    lstr = str + str charAt(l)     for(int l=j+ ;l<=i;l++)    str = str + str charAt(l)     tempPort = Integer parseInt(str ) * * +Integer parseInt(str )         使用该命令时 客户端必须发送客户端用于接收数据的 位IP 地址和 位 的TCP 端口号 这些信息以 位为一组 使用十进制传输 中间用逗号隔开     ◆ TYPE命令处理代码如下     if(str startsWith( TYPE ))    out println( type set )         TYPE 命令用来完成类型设置     ( ) FTP 服务命令    ◆ RETR (RETEIEVE) 和 STORE (STORE)命令处理的代码     if(str startsWith( RETR ))    out println( Binary data connection )     str = str substring( )     str = str trim()     RandomAccessFile outFile = newRandomAccessFile(dir+ / +str r )     Socket tempSocket = new Socket(host tempPort)     OutputStream outSocket= tempSocket getOutputStream()     byte byteBuffer[]= new byte[ ];    int amount;    try    while((amount = outFile read(byteBuffer)) != )     outSocket write(byteBuffer amount)         outSocket close()     out println( transfer plete )     outFile close()     tempSocket close()     catch(IOException e)        if(str startsWith( STOR ))    out println( Binary data connection )     str = str substring( )     str = str trim()     RandomAccessFile inFile = newRandomAccessFile(dir+ / +str rw )     Socket tempSocket = new Socket(host tempPort)     InputStream inSocket= tempSocket getInputStream()     byte byteBuffer[] = new byte[ ];    int amount;    try    while((amount =inSocket read(byteBuffer) )!= )    inFile write(byteBuffer amount)     inSocket close()     out println( transfer plete )     inFile close()     tempSocket close()     catch(IOException e)            文件传输命令包括从服务器中获得文件RETR和向服务器中发送文件STOR 这两个命令的处理非常类似 处理RETR命令时 首先得到用户要获得的文件的名称 根据名称创建一个文件输入流 然后和客户端建立临时套接字连接 并得到一个输出流 随后 将文件输入流中的数据读出并借助于套接字输出流发送到客户端 传输完毕以后 关闭流和临时套接字     STOR 命令的处理也是同样的过程 只是方向正好相反     ◆ DELE (DELETE)命令处理代码如下     if(str startsWith( DELE ))    str = str substring( )     str = str trim()     File file = new File(dir str)     boolean del = file delete()     out println( delete mand successful )         DELE 命令用于删除服务器上的指定文件     ◆ LIST命令处理代码如下     if(str startsWith( LIST ))     try    out println( ASCII data )     Socket tempSocket = new Socket(host tempPort)     PrintWriter out = new PrintWriter(tempSocket getOutputStream() true)     File file = new File(dir)     String[]    dirStructure = new String[ ];    dirStructure= file list()     String strType= ;    for(int i= ;iif( dirStructure[i] indexOf( ) == )     strType = d ;    else    strType = ;    out println(strType+dirStructure[i])     tempSocket close()     out println( transfer plete )     catch(IOException e)        LIST 命令用于向客户端返回服务器中工作目录下的目录结构 包括文件和目录的列表 处理这个命令时 先创建一个临时的套接字向客户端发送目录信息 这个套接字的目的端口号缺省为 然后为当前工作目录创建File 对象 利用该对象的list()方法得到一个包含该目录下所有文件和子目录名称的字符串数组 然后根据名称中是否含有文件名中特有的 来区别目录和文件 最后 将得到的名称数组通过临时套接字发送到客户端 cha138/Article/program/Java/hx/201311/26847

相关参考

知识大全 SQL中两台服务器间使用连接服务器

SQL中两台服务器间使用连接服务器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  执行另一服务器

知识大全 区分Tomcat与Web服务器、应用服务器的关系

区分Tomcat与Web服务器、应用服务器的关系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 列出小型电子商务网站服务器的简要硬件指标,3-5万远的服务器硬件配置

列出小型电子商务网站服务器的简要硬件指标,3-5万远的服务器硬件配置3-5万元的服务器硬件已经非常的不错了。。电子商务网站相对于新闻网站对服务器的要求性能高很多,因为大多都是asp,php,jsp+数

知识大全 用java写一个登陆程序,可以与服务器连接,登陆成功后跳转到服务器网站上

用java写一个登陆程序,可以与服务器连接,登陆成功后跳转到服务器网站上楼主,这样的需求,不管如何都要有一个API说明的吧,根据实际的情况写相应的网络程序ftp服务器无法登陆,同一个服务器上的网站可以

知识大全 WOW为什么我自己的服务器进不去 其他服务器可以进

WOW为什么我自己的服务器进不去其他服务器可以进  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!WOW

知识大全 香港服务器租用一个月要多少钱

香港服务器租用一个月要多少钱?你可以用自己的服务器主机放到香港新世界机房,服务器托管香港四大机房最低价,如果再五台机器内用我们四分之一机柜就可以了,加百兆共享带宽每月一千多一点就可以了。香港服务器租用

文件服务器程序是专为提供网络服务的网络管理软件,它的作用是()

文件服务器程序是专为提供网络服务的网络管理软件,它的作用是()A、直接与网络服务器硬盘和网卡驱动程序连接。B、为本地的应用提供各类网络服务。C、对用户访问服务器的权限和数据加密进行管理。D、对多个用户

文件服务器程序是专为提供网络服务的网络管理软件,它的作用是()

文件服务器程序是专为提供网络服务的网络管理软件,它的作用是()A、直接与网络服务器硬盘和网卡驱动程序连接。B、为本地的应用提供各类网络服务。C、对用户访问服务器的权限和数据加密进行管理。D、对多个用户

知识大全 一个网站的后台硬件设备除了服务器都需要哪些

一个网站的后台硬件设备除了服务器都需要哪些还有控制面板,比如cpanel,plesk等,不过选择一台稳定的服务器是非常重要的raks-mart网站的后台硬件设备除了服务器都需要哪些除了服务器,网络设备

知识大全 sql server 2000安装后,打开服务器,不出现服务器名称,自己输入后名称后,启动时显示拒绝访问

sqlserver2000安装后,打开服务器,不出现服务器名称,自己输入后名称后,启动时显示拒绝访问?1>网卡有问题请检查,以太网适配器是否安装正确2>协议有问题请检查,TCP/IP协议,