ftp协议的简单介绍以及相关操作



ftp协议专门用于文件的上传、下载,效率更高。而它的端口号一般为21,http也是一种协议,而它的端口号为80。sql server:133 oracle:1521


登录FTP一般需要用户名、密码,根据用户名的不同有不同的权限(文件:上传、下载、删除、附加;目录:创建、删除),不同的用户可以看不同的目录;如果不输入用户名则认为是匿名用户,其实就是用户名为Anonymous的用户,匿名用户一般只给下载权限。

如何运用程序对ftp进行操作呢?
1、Net中内置的操作FTP的类有:WebClient、FtpWebRequest。WebClient用起来简单,但是只能上传、下载。 FtpWebRequest 比较强大,WebClient内部就是调用FtpWebRequest实现的,如果要实现遍历ftp文件、创建ftp文件夹等就要用FtpWebRequest 。或者是FtpClient
WebClient也可以下载Http网页、上传Http文件,后面站内搜索、采集器项目中还将会用到。在讲正则表达式的应用,抓取数据的时候应用到此类。在正则中应用到的类还有Regex这个类,运用此类的方法可以判断一个字符串是否匹配一个正则表达式等。
代码:
#region WebClient下载
             //WebClient client = new WebClient();
            创建连接到ftp服务器的网络凭证
            //client.Credentials = new NetworkCredential("lyc", "lyc");
            连接到ftp服务器,并下载所需资源
            //client.DownloadFile("
ftp://172.22.**.**/Word List 1/Word list 1.MP3", @"E:\Word list 1.MP3");
            //Console.WriteLine("下载成功");
            #endregion

            #region WebClient上传
            //WebClient client = new WebClient();
            //client.Credentials = new NetworkCredential("lyc", "lyc");
            第一个参数表示要上传到的服务器的地址,注意需要自己定义上传之后的文件名称,第二参数表示姚上传的本地文件路径
            //client.UploadFile("
ftp://172.22.**.**/Word List 1/qie.jpg", @"C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg");
            //Console.WriteLine("上传成功");
            #endregion

webclient只能进行简单的下载,上传工作,所以我们可以用FtpClient进行操作。FtpClient类是手写,开源的。类中有很多方法可以进行很多操作。

写的用户必须要有下载、上传等访问权限。

实例代码:

 #region FtpClient下载
            //FtpClient client = new FtpClient("172.22.**.**", "lyc", "lyc");
            bool result= client.Download("qie.jpg", @"E:\ftpfiles\企鹅.jpg");
            //bool result = client.Download("Word List 10/Word List 10.MP3", @"E:\ftpfiles\Word List 10.MP3");
            //if (result)
            //{
            //    Console.WriteLine("下载成功");
            //}
            //else
            //{
            //    Console.WriteLine("下载失败");
            //}
            #endregion

            #region FtpClient上传
            FtpClient client = new FtpClient("172.22.**.**", "lyc", "lyc");

            //在服务器上创建目录newfile,如果创建成功,则将文件上传到新创建的文件夹下面
            if (client.MakeDirectory("newfile"))
            {
                FileInfo file = new FileInfo(@"F:\soft\ASCII码表完整版.doc");
               //第一个参数是fileInfo类型,第二个参数是要保存到的服务器上目录以及文件名称
                bool result = client.Upload(file, "newfile/ASCII码表完整版.doc");
                if (result)
                {
                    Console.WriteLine("上传成功");
                }
                else
                {
                    Console.WriteLine("上传失败");
                }
            }
            else
            {
                Console.WriteLine("目录创建失败");
            }
           
            #endregion

            Console.ReadKey();
           
        }
    }
}


自己写的ftp服务端程序代码,支持{"USER", do_user }, {"PASS", do_pass }, {"CWD", do_cwd }, {"XCWD", do_cwd }, {"CDUP", do_cdup }, {"REIN", do_rein },//重新初始化,此命令终止USER,重置所有参数,控制连接仍然打开,用户可以再次使用USER命令 {"QUIT", do_quit }, /*------------传输参数命令------------*/ {"PORT", do_port },//数据端口,主要向服务器发送客户数据连接的端口 //格式为PORT h1,h2,h3,h4,p1,p2,其中32位的IP地址用h1,h2,h3,h4表示,16位的TCP端口号用p1,p2表示 {"PASV", do_pasv },//此命令要求服务器数据传输进程在指定的数据端口侦听,进入被动接收请求的状态 {"TYPE", do_type },//文件类型,可指定ASCII码、EBCDIC码、Image、本地类型文件等参数 /*------------服务命令----------------*/ {"RETR", do_retr },//下载文件 {"STOR", do_stor },//上传 {"APPE", do_appe },//上传,如文件已存在,数据附加到尾部 {"REST", do_rest },//重新开始 {"RNFR", do_rnfr }, {"RNTO", do_rnto },//重命名文件或目录 {"ABOR", do_abor },//异常终止 {"DELE", do_dele },//删除文件 {"RMD", do_rmd },//删除目录 {"XRMD", do_rmd }, {"MKD", do_mkd },//新建目录 {"XMKD", do_mkd }, {"PWD", do_pwd },//打印当前目录 {"XPWD", do_pwd }, {"LIST", do_list },//列目录详细清单 {"NLST", do_nlst },//列目录短清单 {"SYST", do_syst },//获取系统信息 {"STAT", do_stat },//返回服务器状态 {"SIZE", do_size },//获得文件大小 {"HELP", do_help }, {"NOOP", do_noop }, {"SITE", do_site }, }等命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿猿网页设计(yywyss365)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值