如何进行ftp客户端程序设计(FTP客户端程序设计)

      最后更新:2022-12-14 03:14:09 手机定位技术交流文章

      使用 C++语言设计一个ftp客户端软件,如何入手?

      也不一定要用VC++,C也行要使用api,这篇文章使用的mfc写的很好照着做就能做出来一个类似你要的 http://blog.163.com/huangguoqiang_123@126/blog/static/141043114201042905746/
      可以参照开放源码的项目FileZilla,应该比较符合你的要求。 http://sourceforge.net/projects/filezilla
      你会不会网编程,socket熟不熟,找个例子看一看,在看看ftp的协议,你也不用全部支持,一般的put,get命令支持一下就行,命令行也可以啊,不一定要mfc
      MFC其实是比较简单的,你做的时候可以随便画界面,然后用到什么控件,去MSDN搜索控件的成员函数,看下就会知道这个控件怎么使用。其实可以看一下《深入浅出MFC》
      使用 C++语言设计一个ftp客户端软件,如何入手?

      用C语言写一个FTP的客户端程序,需要了解哪些知识

      一、需要的知识点: 1、SOCKET技术,网络编程的基本功能2、FTP3、如果需要自己写,可能需要熟悉各个网络框架二、编写FTP所需要掌握的框架1、wininet 2、libcurl
      用C语言写一个FTP的客户端程序,需要了解哪些知识

      怎么用Java开发FTP客户端

      摘要 本文解释了如何利用库用Java语言编写FTP客户端代码。它比较了FTP库的一个完全列表,演示了每个库的优点和缺点,并且帮助决策者为他们的需要选择适当的库。另外,本文阐述了Fa?ade模式如何在取代一个库时改变管理。最后,作者Jean-Pierre Norguet讨论并解决了由于缺乏权威性的说明书引起的一些问题。让我们假设一个情景:我们要编写一个纯Java应用程序,该程序必须从运行FTP服务器的远程计算机上下载文件。我们也通过远程文件信息,像名字、日期、或者尺寸,来过滤下载。自己来写一个FTP协议处理,尽管是有可能,并且可能很有趣。但是这样做也有可能有困难、花费长时间、并且有潜在的风险。既然我们不肯花费时间、精力、或者金钱自己来写一个处理器,那我们推荐使用一个可重用的现有的软件组件。万维网上有并且大量的库可供使用。有了一个FTP客户端库,下载一个文件用Java语言编写就像下面一样简单:FTPClient ftpClient = new FTPClient();ftpClient.connect("ftp.foo.com", "user01", "pass1234");ftpClient.download("C:\Temp\", "README.txt");// Eventually other operations here ...ftpClient.disconnect();寻找一个适合我们需要的高质量的Java FTP客户端库并不像他看起来那么简单;它可能相当困难。要找到一个Java FTP客户端库需要花一些时间。接着,在我们找到所有的已存在的库之后,我们选哪个?每个库适合不同的需要。库在质量上是不等的,并且它们的设计有本质的区别。每个提供一套不同的属性和使用不同类型的行话来描述他们。因此,计算和比较FTP客户端库证明是困难而且令人迷惑的。重复使用已存在的组件是一个值得推荐的过程,但在这个例子中,启动它也是令人沮丧的。并且这有点羞愧:在选好的一个好的FTP库之后,剩下的工作就是例程了。本文旨在使选择过程简短、容易、并且有价值。我首先列出了所有的FTP客户端库。接着,我定义和描述了库应该用某种方式找到的相关标准的一个表格。最后,我列出了一个总浏览的矩阵,该矩阵给出了库间相互比较的过程的快速浏览。所有的信息提供了我们作出一个迅速、可靠、和长期的决定所需的每件事。使用JDK(Java 开发工具集)的FTP支持用于FTP的访问规范是用于注释的请求:959(RFC959)。Sun Microsystems提供了JDK的一个RFC959执行。但是它是内部的、非文档化的、并且不提供任何资源。当RFC959在尚未公开时,它实际上是执行RFC1738、URL规范的一个公共界面的后终端。如图1。图1. 使用JDK的FTP支持。RFC1738的一个执行过程在JDK中作为标准给出。它为基本的FTP传送做一个可推理的工作。它是公共的、文档化的、并且提供源代码。要使用它,我们可编写下面语句:URL url = new URL("ftp://user01:pass1234@ftp.foo.com/README.txt;type=i");URLConnection urlc = url.openConnection();InputStream is = urlc.getInputStream(); // To downloadOutputStream os = urlc.getOutputStream(); // To upload使用JDK的FTP客户端严格的遵守标准推荐,但它有以下几个说明:它从根本上区别于第三方的FTP客户端库;这些执行RFC959而不是RFC1738RFC959用大多数的桌面FTP客户端工具执行。许多Java程序员使用这些工具连接到FTP服务器上。作为一个尝试,这些工具及有可能优先于类似的RFC959库。URL 和URLConnection类只开放用于通讯的流。Sun库不为构造原始的FTP服务器响应成为像String、 File、 RemoteFile、 或者 Calendar之类的更合用的Java对象而提供直接支持。所以我们不得不编写更多的代码,只是为了把数据写入一个文件中或者开始一个目录列表。正像RFC1738的3.2部分解释的一样,"最优化",FTP URL在每个操作后要求关闭(控制)连接。这对于传送许多小文件是一种浪费、并且毫无效率。而且,作了特别限制FTP服务器可能把会这样一个通讯开销认为一个是恶毒的网络攻击或者滥用而拒绝提供进一步的服务。最后,它缺乏几个有用的属性。由于以上所有或者某种原因,可优先使用一个第三方的库。下面部分列出了可供选择的第三方的库。见:http://www.javaworld.com/javaworld/jw-04-2003/ftp/jw-0404-ftptable.html
      只能给楼主个思路了,具体实现自己研究去. 用Java的socket来做.建立主机和客户端通信. 然后用Java的IO流来对文件进行操作.
      用易语言可能好编一点,里面有FTP函数,可以直接调用。
      怎么用Java开发FTP客户端

      FTP客户端程序设计(java)

      package jing.upfile; import sun.net.ftp.*;import sun.net.*;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ByteArrayOutputStream;import java.util.ArrayList;import java.util.StringTokenizer;/**FTP远程命令列表
      USERPORTRETRALLODELESITEXMKDCDUPFEAT
      PASSPASVSTORRESTCWD STATRMD XCUPOPTS
      ACCTTYPEAPPERNFRXCWDHELPXRMDSTOUAUTH
      REINSTRUSMNTRNTOLISTNOOPPWD SIZEPBSZ
      QUITMODESYSTABORNLSTMKD XPWDMDTMPROT
      在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上rn
      ftpclient.sendServer("XMKD /test/bbrn"); //执行服务器上的FTP命令
      ftpclient.readServerResponse一定要在sendServer后调用
      nameList("/test")获取指目录下的文件列表
      XMKD建立目录,当目录存在的情况下再次创建目录时报错
      XRMD删除目录
      DELE删除文件
      *

      Title: 使用JAVA操作FTP服务器(FTP客户端)

      *

      Description: 上传文件的类型及文件大小都放到调用此类的方法中去检测,比如放到前台JAVASCRIPT中去检测等* 针对FTP中的所有调用使用到文件名的地方请使用完整的路径名(绝对路径开始)。*

      *

      Copyright: Copyright (c) 2005

      *

      Company: 静靖工作室

      * @author 欧朝敬13873195792* @version 1.0*/public class FtpUpfile {private FtpClient ftpclient;private String ipAddress;private int ipPort;private String userName;private String PassWord;/*** 构造函数* @param ip String 机器IP* @param port String 机器FTP端口号* @param username String FTP用户名* @param password String FTP密码* @throws Exception*/public FtpUpfile(String ip, int port, String username, String password) throwsException {ipAddress = new String(ip);ipPort = port;ftpclient = new FtpClient(ipAddress, ipPort);//ftpclient = new FtpClient(ipAddress);userName = new String(username);PassWord = new String(password);}/*** 构造函数* @param ip String 机器IP,默认端口为21* @param username String FTP用户名* @param password String FTP密码* @throws Exception*/public FtpUpfile(String ip, String username, String password) throwsException {ipAddress = new String(ip);ipPort = 21;ftpclient = new FtpClient(ipAddress, ipPort);//ftpclient = new FtpClient(ipAddress);userName = new String(username);PassWord = new String(password);}/*** 登录FTP服务器* @throws Exception*/public void login() throws Exception {ftpclient.login(userName, PassWord);}/*** 退出FTP服务器* @throws Exception*/public void logout() throws Exception {//用ftpclient.closeServer()断开FTP出错时用下更语句退出ftpclient.sendServer("QUITrn");int reply = ftpclient.readServerResponse(); //取得服务器的返回信息}/*** 在FTP服务器上建立指定的目录,当目录已经存在的情下不会影响目录下的文件,这样用以判断FTP* 上传文件时保证目录的存在目录格式必须以"/"根目录开头* @param pathList String* @throws Exception*/public void buildList(String pathList) throws Exception {ftpclient.ascii();StringTokenizer s = new StringTokenizer(pathList, "/"); //signint count = s.countTokens();String pathName = "";while (s.hasMoreElements()) {pathName = pathName + "/" + (String) s.nextElement();try {ftpclient.sendServer("XMKD " + pathName + "rn");} catch (Exception e) {e = null;}int reply = ftpclient.readServerResponse();}ftpclient.binary();}/*** 取得指定目录下的所有文件名,不包括目录名称* 分析nameList得到的输入流中的数,得到指定目录下的所有文件名* @param fullPath String* @return ArrayList* @throws Exception*/public ArrayList fileNames(String fullPath) throws Exception {ftpclient.ascii(); //注意,使用字符模式TelnetInputStream list = ftpclient.nameList(fullPath);byte[] names = new byte[2048];int bufsize = 0;bufsize = list.read(names, 0, names.length); //从流中读取list.close();ArrayList namesList = new ArrayList();int i = 0;int j = 0;while (i < bufsize /*names.length*/) {//char bc = (char) names;//System.out.println(i + "" + bc + " : " + (int) names);//i = i + 1;if (names == 10) { //字符模式为10,二进制模式为13//文件名在数据中开始下标为j,i-j为文件名的长度,文件名在数据中的结束下标为i-1//System.out.write(names, j, i - j);//System.out.println(j + " " + i + "" + (i - j));String tempName = new String(names, j, i - j);namesList.add(tempName);//System.out.println(temp);// 处理代码处//j = i + 2; //上一次位置二进制模式j = i + 1; //上一次位置字符模式}i = i + 1;}return namesList;}/*** 上传文件到FTP服务器,destination路径以FTP服务器的"/"开始,带文件名、* 上传文件只能使用二进制模式,当文件存在时再次上传则会覆盖* @param source String* @param destination String* @throws Exception*/public void upFile(String source, String destination) throws Exception {buildList(destination.substring(0, destination.lastIndexOf("/")));ftpclient.binary(); //此行代码必须放在buildList之后TelnetOutputStream ftpOut = ftpclient.put(destination);TelnetInputStream ftpIn = new TelnetInputStream(newFileInputStream(source), true);byte[] buf = new byte[204800];int bufsize = 0;while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {ftpOut.write(buf, 0, bufsize);}ftpIn.close();ftpOut.close();}/*** JSP中的流上传到FTP服务器,* 上传文件只能使用二进制模式,当文件存在时再次上传则会覆盖* 字节数组做为文件的输入流,此方法适用于JSP中通过* request输入流来直接上传文件在RequestUpload类中调用了此方法,* destination路径以FTP服务器的"/"开始,带文件名* @param sourceData byte[]* @param destination String* @throws Exception*/public void upFile(byte[] sourceData, String destination) throws Exception {buildList(destination.substring(0, destination.lastIndexOf("/")));ftpclient.binary(); //此行代码必须放在buildList之后TelnetOutputStream ftpOut = ftpclient.put(destination);ftpOut.write(sourceData, 0, sourceData.length);//ftpOut.flush();ftpOut.close();}/*** 从FTP文件服务器上下载文件SourceFileName,到本地destinationFileName* 所有的文件名中都要求包括完整的路径名在内* @param SourceFileName String* @param destinationFileName String* @throws Exception*/public void downFile(String SourceFileName, String destinationFileName) throwsException {ftpclient.binary(); //一定要使用二进制模式TelnetInputStream ftpIn = ftpclient.get(SourceFileName);byte[] buf = new byte[204800];int bufsize = 0;FileOutputStream ftpOut = new FileOutputStream(destinationFileName);while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {ftpOut.write(buf, 0, bufsize);}ftpOut.close();ftpIn.close();}/***从FTP文件服务器上下载文件,输出到字节数组中* @param SourceFileName String* @return byte[]* @throws Exception*/public byte[] downFile(String SourceFileName) throwsException {ftpclient.binary(); //一定要使用二进制模式TelnetInputStream ftpIn = ftpclient.get(SourceFileName);ByteArrayOutputStream byteOut = new ByteArrayOutputStream();byte[] buf = new byte[204800];int bufsize = 0;while ((bufsize = ftpIn.read(buf, 0, buf.length)) != -1) {byteOut.write(buf, 0, bufsize);}byte[] return_arraybyte = byteOut.toByteArray();byteOut.close();ftpIn.close();return return_arraybyte;}/**调用示例* FtpUpfile fUp = new FtpUpfile("192.168.0.1", 21, "admin", "admin");* fUp.login();* fUp.buildList("/adfadsg/sfsdfd/cc");* String destination = "/test.zip";* fUp.upFile("C:\Documents and Settings\Administrator\My Documents\sample.zip",destination);* ArrayList filename = fUp.fileNames("/");* for (int i = 0; i < filename.size(); i++) {* System.out.println(filename.get(i).toString());* }* fUp.logout();* @param args String[]* @throws Exception*/public static void main(String[] args) throws Exception {FtpUpfile fUp = new FtpUpfile("192.150.189.22", 21, "admin", "admin");fUp.login();/*fUp.buildList("/adfadsg/sfsdfd/cc");String destination = "/test/SetupDJ.rar";fUp.upFile("C:\Documents and Settings\Administrator\My Documents\SetupDJ.rar",destination);ArrayList filename = fUp.fileNames("/");for (int i = 0; i < filename.size(); i++) {System.out.println(filename.get(i).toString());}fUp.downFile("/sample.zip", "d:\sample.zip");*/FileInputStream fin = new FileInputStream("C:\AAA.TXT");byte[] data = new byte[20480];fin.read(data, 0, data.length);fUp.upFile(data, "/test/BBB.exe");fUp.logout();System.out.println("程序运行完成!");/*FTP远程命令列表USERPORTRETRALLODELESITEXMKDCDUPFEATPASSPASVSTORRESTCWD STATRMD XCUPOPTSACCTTYPEAPPERNFRXCWDHELPXRMDSTOUAUTHREINSTRUSMNTRNTOLISTNOOPPWD SIZEPBSZQUITMODESYSTABORNLSTMKD XPWDMDTMPROT*//*在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上rnftpclient.sendServer("XMKD /test/bbrn"); //执行服务器上的FTP命令ftpclient.readServerResponse一定要在sendServer后调用nameList("/test")获取指目录下的文件列表XMKD建立目录,当目录存在的情况下再次创建目录时报错XRMD删除目录DELE删除文件*/} }
      太假了,这只是我们的计算机网络的一个实验,你居然用来当课设...
      mina.apache.org 服务器端,客户端都有!开源的!
      已经发到你邮箱里了!注意接收!!
      FTP客户端程序设计(java)

      怎样创建ftp服务器 创建ftp服务器详细步骤?

      1、首先我们在server机器上创建两个用户,这些用户是用来登录到FTP的。我的电脑右键->管理->本地用户和组->用户->“右键”新建用户->输入用户名和密码再点创建就行了。 2、在C盘新建文件夹“C:FTP上传”,并在此文件下新建“LocalUser”文件夹,并在此文件夹下创建“Public”(这个是公共文件夹)、“xxx”和“xxx1”文件夹(xxx和XXX1必须与创建的本地用户相同)。在C盘新建文件夹“C:FTP下载”,并在每个文件夹里放不同的文件,以便区分。3、安装IIS组件。在开始菜单里—>控制面板-〉添加或删除程序->添加/删除windows组件->应用程序服务器->详细信息->IIS-〉详细信息-〉FTP-〉确定-〉完成。这样就把FTP安装在服务器上了。4、配置FTP服务器,创建上传和下载服务!创建上传服务器:右键FTP站点->选择新建FTP站点->描述可以根据自己的需要填写->地 址一般都是server的地址,端口就用默认的21吧->因为是提供上传服务的,所以就用隔离用户啦->它的目录指向“C:FTP上 传”->访问权限要钩上“读取”和“写入”啦(图片上错了的~)->点击完成就把上传的服务创建好了。创建下载服务器:因为21号端口已经被占用所以我们就用2121端口,不隔离用户。它的目录指向“C:FTP下载”,只有读取权限,就简单的几步我们就把一个FTP服务器创建好了。 5、在XP主机上测试已经完成安装的FTP服务器。我们在XP主机上输入FTP服务器的IP地址FTP://192.168.1.2就能打开上传的FTP页面,输入FTP://192.168.1.2:2121就能打开下载页面了,我们还可以用之前创建的那两个用户去登录FTP服务器,因为只有上传服务提供了用户文件夹,所以只有登录到上传服务时才能打开用户文件夹。这个文件夹是用专用的,其它用是无法对里面的文件进行操作的,我们还能成功地在下载服务器里下载文件到XP主机上了
      用Serv-U 吧,简单易懂,非常容易上手 如何建立一个FTP服务器(SERV-U使用教程)Serv-U 是一个可以运行于Windows 95/98/2000/ME 和 Windows NT 4.0下的FTP服务器程序。有了它,你的个人电脑 就可以模拟为一个FTP服务器,也就是说,你所连接的网络中的计算机用户可以访问你的个人电脑,通过FTP协议(文件传输协议)复制、移动、删除你的电脑中的文件或文件夹,可以做一切权限所允许的事情。FTP协议规定了计算机之间的标准通讯方式,使所有不同类型,不同工作系统,不同格式的电脑之间得以互换文件。它可以用最简单的方式创建用户帐号,并且在硬盘空间上划分一定的区域用以存放文件,让用户以各种FTP客户端软件(如CuteFTP、WS_FTP等)上传或下载所需要的文件。1、如何建立第一步安装原版软件和汉化补丁,这个过程就不多说了,想必没人不会的。2、安装完成后程序会自动运行,你也可以在菜单中选择运行。第一次运行程序,它会弹出设置向导窗口,将会带你完成最初的设置。单击“下一步”,出现“显示菜单图像”的窗口,问你是否在菜单中显示小图像,看各人喜欢了。3、 单击“下一步”,这个窗口是让你在本地第一次运行FTP服务器,只要“下一步”就行了。4、 接下来要你输入你的IP地址,如果你自己有服务器,有固定的IP,那就请输入IP地址,如果你只是在自己电脑上建立FTP,而且又是拨号用户,有的只是动态IP,没有固定IP,那这一步就省了,什么也不要填,Serv-U 会自动确定你的IP地址,单击“下一步”;5、 在这儿要你输入你的域名,如果有的话,如:FEIMIAO.no-ip.com,没有的话,就随便填一个;6、 “下一步”,询问你是否允许匿名访问。一般说来,匿名访问是以Anonymous为用户名称登录的,无需密码,当然如果你想成立一个会员区什么的,就应该选择“否”,不让随便什么人都可以登录,只有许可用户才行,在此我们填“是”;7、 “下一步”,问你匿名用户登录到你的电脑时的目录,你可以自己指定一个硬盘上已存在的目录,如E:temp;8、 “下一步”,询问你是否要锁定该目录,锁定后,匿名登录的用户将只能认为你所指定的目录(F:temp)是根目录,也就是说它只能访问这个目录下的文件和文件夹,这个目录之外就不能访问,对于匿名用户一般填“是”;9、 “下一步”,询问你是否创建命名的帐号,也就是说可以指定用户以特定的帐号访问你的FTP,这对于办会员区可很有用哦,你可以对于每个人都创建一个帐号,每个帐号的权限不同,就可以不同程序地限制每个人的权利,方法将在后面讲到,这里选择“是”;10、 “下一步”,请你填入所要建立的帐号的名称11、“下一步”,请输入密码,如:87412、 “下一步”,询问登录目录是什么,这一步与第7步一样,如:F:temp13、 “下一步”,询问你是否要锁定该目录,同第8步,这里选择“否”;14、 接下来询问你这次创建的用户的管理员权限,有几项选择:无权限,组管理员,域管理员,只读管理员和系统管理员,每项的权限各不相同;这里选择“系统管理员”;15、 最后一步,点击“完成”就OK了,你有什么需要修改的,可以点“上一步”,或者进入Serv-U管理员直接修改。至此,我们建立了一个域ftp.abc.com,两个用户,一个Anonymous,一个ldr。既然我们已经建立好FTP服务器,那么我们就应该可以用FTP客户端软件来尝试登录。怎么办呢?其实很简单,我们不用上网,就可以测试。我们知道,不上网时,本地机的IP地址默认就为127.0.0.1,FTP端口号为21。Serv-U管理员中的各项设置在设置完成后,将会进入Serv-U管理员的主界面,左边窗格中显示各个栏目,右边窗格中显示各个栏目的具体选项,下面就大概讲一讲设置内容。1、 中,我们可以人 为地控制Serv-U引擎的运行或停止,记住,在Win 9x/Me 中,我们就要在此选择“系统服务”,才会运行Serv-U引擎。2、 “许可”,如果你花美元买了注册号,就可以在此输入。3、 “设置”,这个设置是对于“本地服务器”来说的。“常规”设置中可以限制服务器的最大速度,可以拦截FXP(站点到站点传送),也可以限制用户的数量,这样不至于你的服务器被拖跨。“目录缓存”设置中允许你自己确定目录列表的个数以及超时时间,在Windows 95 和 NT下,目录列表默认设置为25,当缓存满了之后,新的请求将替换老的请求。“高级”设置中可以让你自己定义服务器、Socket、文件的上传和下载的各项设置。4、 “活动”,在这里记录了用户的活动日志,已封锁的IP的活动日志,以及任务日志;任务日志中显示的就是你开始停止的各项操作记录,你可以点击右键,选择此过滤文本,使其只显示你所想见的内容。5、 “域”,这里包含了你一开始根据向导所建立的用户、设置、域等。“域--设置”中所设置的内容其实与第3步差不多,只是它更加具体,可以对于每一个不同域定制。“域--活动”中记载了这个域下所有用户的活动情况。6、 “域--组”,我们可以自己建立一些便于管理的组,然后把一类的用户归到一个组中。7、 “域--用户”中A、对于一些不守规则的人,我们可以选择“禁用帐号”,虽然有帐号,但可以使用户一时间无法登录;你也可以设置让程序到达某个日期后自动删除某个帐号;下面几栏是这个帐号的基本信息,我们都可以在此更改,其中密码改过后并不显示,而是统一显示<>,特别要注意选项“锁定用户于主目录”,什么意思呢?大家应该碰到,每次我们登录到FTP服务器上后,在根目录下只显示“/”,选择这项选项后,就是这样,如果不选,会出现什么情况呢?你可以做一下试验,在根目录下将显示“/f:/myself/”,也就是说显示了你硬盘中的绝对地址,这在某些情况下是很危险的,有不怀好意的高手,你就麻烦了!B、“常规”栏你可以隐藏属性为隐藏的文件,可以限制同一IP的登录个数,是否允许用户更改密码(这需要客户端软件的支持),最大上传下载的速度,超时时间以及空闲时间,你也可以限制最大用户数量,如20,说明同时只能有20个用户登录。C、“目录访问”栏在此你可以控制用户对于文件目录的权限,对文件有读取、写入、删除、追加、执行等操作,对于文件夹有列表、创建、删除,以及是否继承子目录;如果觉得目录不够,你也可以添加可访问的目录。D、“IP访问”栏在这里你可以规定某个IP是否可以访问你的FTP服务器,你可以拒绝它的访问,只要填上相应的IP地址,以后由这个IP的访问通通被拦下。E、“上传/下载率”栏在这里你可以设置上传和下载之间的比值,控制好上传和下载之间的数据流量关系。F、“配额”栏 这里你可以为每个FTP用户设置磁盘空间,点击“计算当前”,可以知道当前目录下的所有空间大小,在“最大”一栏中填入你想要限制的容量。最后有一点,改过设置后一定要点击右键,选择“应用”使设置生效才行,否则一切都白做了!!
      怎样创建ftp服务器 创建ftp服务器详细步骤?

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/47515.html

          热门文章

          文章分类