欢迎来到一句话经典语录网
我要投稿 投诉建议
当前位置:一句话经典语录 > 心得体会 > ftp客户端心得体会

ftp客户端心得体会

时间:2019-09-13 05:44

FTP实验报告。

求帮忙完成

其中客户端软件命名为myftp,服务器软件命名为ftpserver。

具体功能需求如下。

(一) 服务器1) 启动方式。

执行ftpserver [IP地址] port启动FTP服务。

其中IP地址为可选项。

若不提供服务器IP地址,FTP服务将自动绑定到本地网络的IP。

2) 用户认证与权限管理。

为FTP客户提供基于用户名\\\/密码认证的服务模式,只有授权用户才可以访问FTP服务。

与此同时,对文件\\\/目录的访问,也实现基于授权的访问机制,即只有授权用户才可以对指定文件进行读写操作。

用户只有在具备写权限操作的目录上才能上传文件。

(可直接集成Linux服务器系统的用户管理)3) 并行执行功能。

为提高系统性能,服务器将采用多进程\\\/线程技术响应客户请求。

当客户通过身份验证后,服务器将创建一个新的进程\\\/线程来响应用户请求,提供服务。

4) 服务器支持的客户文件操作。

登录成功后,客户可在服务器执行以下操作:创建\\\/删除目录(mkdir\\\/rmdir)、显示当前路径(pwd)、切换目录(cd)、查看当前目录下的所有文件(ls)、上传单个\\\/多个文件(put\\\/mput)、下载单个\\\/多个文件(get\\\/mget)。

5) 服务传输模式。

支持二进制(默认)及ASCII传输模式。

用户可通过执行binary\\\/ascii命令切换传输模式。

6) 站点计数与用户管理功能。

统计服务器站点的当前活动用户数及自运行以来的访客总数。

系统管理员可在服务器软件运行终端窗口执行以下命令:A)count current:当前活动用户数B) count all:显示系统访客总数C) list:显示当前在线的所有用户的用户名D)kill username:强制删除某个用户。

E) quit:关闭ftp服务器软件。

7) 其他功能。

对用户错误输入提供容错保护,即当用户输入错误命令时,需向客户端返回出错提示信息。

8) 可选功能(加分)。

A)在服务器端为访问频率最高的文件建立缓冲区(可采用共享内存技术),以便提高服务器端的性能。

B) 实现断点续传功能。

(二) 客户端1、 登录管理。

客户端在shell中输入myftp username:passwd@ftp-server-ip:ftp-server-port登录ftpserver。

若通过身份验证,服务器将向客户回显you are client #.(#为第几位用户)并显示ftp命令输入提示符myftp>;否则显示username doesn't exist or password is error!。

2、 文件操作命令。

在客户端执行基本文件操作:创建\\\/删除目录(lmkdir\\\/lrmdir)、显示当前路径(lpwd)、切换目录(lcd)、查看当前目录下的所有文件(dir)、上传单个\\\/多个文件(put\\\/mput)、下载单个\\\/多个文件(get\\\/mget)。

3、 退出系统。

用户执行”quit”断开连接,结束当前FTP会话。

(三) 作业提交要求1、 将客户端源码和服务器源码分别放入命名为ftpclient和ftpserver文件夹中,连同试验报告打包,命名格式为:学号1#学号2...。

2、 作业提交截止时间为下学期第一周的周五。

四、设计思路和流程图(包括主要数据结构及其说明、测试数据的设计及测试结果分析) 五、实验体会(包括实验中遇到的问题及解决过程、产生的错误及原因分析) 六、程序清单(包括源程序、makefile、readme)

ftp客户端 论文摘要怎么写啊

FTP服务器的编程及应用(jsj139)完成一个简单FTP服务器的编程及应用。

实现的功能包括:上传、下载、选择数据传输模式、改变目录等,并给出相应的提示。

目 录引言······································1正文······································2第一章 FTP协议分析·······························21.1FTP工作原理·································21.1.1基本名词································· 21.1.2 FTP的工作原理图····························· 31.2FTP标准命令································ 41.3FTP标准回答································ 5第二章 FTP程序设计·······························62.1任务要求·································· 62.1.1设计题目································· 62.1.2设计目的································· 62.2程序模块化设计································62.2.1程序设计思想································62.2.2重叠模型································· 62.2.3程序流程图································ 9第三章 详细设计································ 103.1main( )函数································ 103.2工作线程函数设计······························ 143.2.1工作线程程序流程图···························· 143.2.2工作线程具体设计····························· 153.3命令处理函数设计······························ 173.4其他函数·································· 25第四章 结论·································· 26参考文献····································27附录······································28致谢······································62摘 要本程序主要用于简单服务器的管理,包括文件的上传、下载、列出目录、改变目录、改变传输方式等功能。

通过该程序的开发,基本上实现了一个FTP服务器的功能,能够解释一般的FTP命令,并且符合RFC959规范。

本程序采用VC++6.0作为开发工具,设计步骤采用自顶向下的方法。

关键词:上传、下载、列出目录、改变目录、改变传输方式、FTP服务器引 言从根本上说,FTP就是在网络中各种不同的计算机之间按照TCP\\\/IP协议来传输文件。

FTP采用的是现在流行的Client\\\/Server模式,由FTP客户端和FTP服务器端程序组成。

通常服务器端是远程端点,用户可以通过Internet网络连接到远程的FTP服务器站点。

服务器的功能是主要的。

只有当FTP服务器支持各种协议和指令时,才能够开发相应的客户端程序。

本程序支持最基本的FTP命令。

仅供参考,请自借鉴。

希望对您有帮助。

ftp的客户端的编写

请将问题描述完全,彼得堡“拓”形象愿意为您服务

我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程

模式:主动模式(Active FTP)和被动模式(Passive FTP) 在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。

服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。

然后向服务器发送PASV命令,通 知服务器自己处于被动模式。

服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。

客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防

ftp客户端有主动模式和被动模式是什么意思

FTP的种方式:ASCII传输模式和二进制数据传输模式。

1.ASCII传输方式:假定用在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。

但是常常有这样的情况,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。

在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。

  2.二进制传输模式:在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。

即使目的地机器上包含位序列的文件是没意义的。

例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。

  如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。

这会使传输稍微变慢 ,也会损坏数据,使文件变得不能用。

(在大多数计算机上,ASCII方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。

如果你传输二进制文件,所有的位都是重要的。

)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。

  5. FTP的工作方式  FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。

Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。

Passive模式FTP的客户端发送 PASV命令到 FTP Server。

  下面介绍一个这两种方式的工作原理:  Port模式FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。

PORT命令包含了客户端用什么端口接收数据。

在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据。

FTP server必须和客户端建立一个新的连接用来传送数据。

  Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。

FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

  很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

求一个用C#编的FTP客户端程序,要可用。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;namespace FTPClient{ class FtpClient { #region 属性、构造函数 public string FtpURL { get; set; } public string FtpUser { get; set; } public string FtpPwd { get; set; } public string UpLoadFile { get; set; } public string downLoadFile { get; set; } private FtpType ftpType = FtpType.Other; public delegate void ExecMsg(object sender,string message,bool isEnd); public event ExecMsg execMsg; public FtpClient() { } public FtpClient(string ftpUrl, string ftpUser, string ftpPwd) { FtpURL = string.IsNullOrEmpty(ftpUrl) ? FtpURL : ftpUrl; FtpUser = string.IsNullOrEmpty(ftpUser) ? FtpUser : ftpUser; FtpPwd = string.IsNullOrEmpty(ftpPwd) ? FtpPwd : ftpPwd; } private void OnExecMsg(object sender,string value,bool isEnd) { if (execMsg != null) { execMsg(sender, value, isEnd); } } #endregion #region Get Server File List internal void DownLoadDirectory(string serverDirectory, string localDirectory,FileType fileType) { List files = GetServerFileList(serverDirectory); foreach (string file in files) { string fileName = Path.GetFileName(file); DownLoadFile(serverDirectory, localDirectory, fileName, fileName, fileType); } } internal List GetServerFileList(string serverDirectory) { List serverFileList = new List(); ftpType = FtpType.Other; FtpWebRequest reqFtp = ConnectFtp(serverDirectory); reqFtp.Method = WebRequestMethods.Ftp.ListDirectory; using (WebResponse response = reqFtp.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string line = reader.ReadLine(); while (line != null) { serverFileList.Add(line); line = reader.ReadLine(); } } } return serverFileList; } #endregion #region DownLoad public void DownLoadFile(string serverDirectory, string localDirectory, string serverfileName, string localFileName,FileType fileType) { OnExecMsg(null, string.Format(Start download file : {0},serverfileName), false); downLoadFile = Path.Combine(localDirectory, string.IsNullOrEmpty(localFileName) ? serverfileName : localFileName); if (!Directory.Exists(localDirectory)) { Directory.CreateDirectory(localDirectory); } if (File.Exists(downLoadFile)) { File.Delete(downLoadFile); } File.Create(downLoadFile).Dispose(); FtpWebRequest reqFtp = ConnectFtp(serverDirectory + \\\/ + serverfileName); reqFtp.Method = WebRequestMethods.Ftp.DownloadFile; using (FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse()) { #region FileType is Text if (FileType.Text.Equals(fileType)) { using (StreamReader ftpStream = new StreamReader(response.GetResponseStream())) { StringBuilder values = new StringBuilder(); int count = 0; bool isEnd = ftpStream.EndOfStream; while (!isEnd) { values.Append(ftpStream.ReadLine() + \\\ ); count++; isEnd = ftpStream.EndOfStream; if (count > 50000 || isEnd) { File.AppendAllText(downLoadFile, values.ToString(), Encoding.Default); values.Remove(0, values.Length); count = 0; } } } } #endregion #region FileType is Binary else { using (Stream ftpStream = response.GetResponseStream()) { int bufferSize = 2048; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); using (FileStream outputStream = new FileStream(downLoadFile, FileMode.Create)) { while (readCount > 0) { outputStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } } } } #endregion } OnExecMsg(null, string.Format(End download file : {0}, serverfileName), true); } #endregion #region UpLoad internal void UploadFolder() { } internal void UploadFile(string file) { ftpType = FtpType.UpLoad; FileInfo fileInfo = new FileInfo(file); FtpWebRequest reqFtp = ConnectFtp(file); reqFtp.Method = WebRequestMethods.Ftp.UploadFile; reqFtp.ContentLength = fileInfo.Length; int buffLength = 2048; byte[] buff = new byte[buffLength]; int contentLen; using (FileStream fs = fileInfo.OpenRead()) { using (Stream strm = reqFtp.GetRequestStream()) { contentLen = fs.Read(buff, 0, buffLength); while (contentLen != 0) { strm.Write(buff, 0, contentLen); contentLen = fs.Read(buff, 0, buffLength); } strm.Close(); fs.Close(); } } } #endregion private FtpWebRequest ConnectFtp(string serverDirectory) { ParameterValidate(); FtpWebRequest reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(FtpURL.Trim()+\\\/+serverDirectory)); reqFtp.UseBinary = true; reqFtp.Credentials = new NetworkCredential(FtpUser, FtpPwd); reqFtp.KeepAlive = false; return reqFtp; } private void ParameterValidate() { StringBuilder validateMsg = new StringBuilder(); validateMsg.Append(string.IsNullOrEmpty(FtpURL) ? ftpURL is Empty : ); validateMsg.Append(string.IsNullOrEmpty(FtpUser) ? ftpUser is Empty : ); validateMsg.Append(string.IsNullOrEmpty(FtpPwd) ? ftpPwd is Empty : ); if (FtpType.UpLoad.Equals(ftpType)) { validateMsg.Append(File.Exists(UpLoadFile) ? file not find : ); } else if (FtpType.DownLoad.Equals(ftpType)) { validateMsg.Append(File.Exists(downLoadFile) ? file is have : ); } if (!string.IsNullOrEmpty(validateMsg.ToString())) throw new Exception(Err: + validateMsg.ToString()); } }}

什么FTP客户端好用,简单,要中文的。

FlashFXP这个我一直在用,很方便,中文的。

谢谢采纳

声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。联系xxxxxxxx.com

Copyright©2020 一句话经典语录 www.yiyyy.com 版权所有

友情链接

心理测试 图片大全 壁纸图片