gpt4 book ai didi

c# - FTP/FTPS/SFTP 之间的区别 - 可配置连接到它们中的任何一个

转载 作者:太空狗 更新时间:2023-10-30 00:10:10 24 4
gpt4 key购买 nike

我有一个要求,比如需要创建一个 C# 应用程序,它会根据在 app.config 文件中输入的设置(使用“ftp\ftps”将 excel 文件上传到“FTP/SFTP”服务器\sftp").

我对这些协议(protocol)很陌生,有很多疑问。

  1. FTP 和 SFTP 服务器有什么区别?
  2. 是否可以使用 SFTP 连接方法访问 FTP 服务器,反之亦然(指导使用 Rebex 库连接到 SFTP)?
  3. 如何把下面的FTP上传方式改成FTPS

代码如下:

string PureFileName = new FileInfo(fileName).Name;
string uploadUrl = String.Format("ftp://{0}/{1}", ftpurl, PureFileName);
FtpWebRequest req = (FtpWebRequest)FtpWebRequest.Create(uploadUrl);
req.Proxy = null;
req.Method = WebRequestMethods.Ftp.UploadFile;
req.Credentials = new NetworkCredential(user, pass);
req.UseBinary = true;
req.UsePassive = true;
byte[] data = File.ReadAllBytes(fileName);
req.ContentLength = data.Length;
Stream stream = req.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
FtpWebResponse res = (FtpWebResponse)req.GetResponse();

这是否类似于将 url 从 FTP 更改为 FTPS?

string uploadUrl = String.Format("ftps://{0}/{1}", ftpurl, PureFileName);

最佳答案

  • FTP:旧的文件传输协议(protocol) (RFC959)。防火墙有问题,因为它使用动态端口,并且有关这些端口的信息在应用程序级别进行交换。
  • FTPS:旧的 FTP 协议(protocol),但增加了对 TLS 的支持。防火墙的问题更大,因为它们无法再查看应用程序级别以找出使用了哪些端口。
  • SFTP:完全不同,因为它使用 SSH 协议(protocol)传输文件。防火墙没有问题。

如果您的代码能够处理 FTPS,那么它通常也能够处理 FTP,但是有很多代码只能处理 FTP 而不能处理 FTPS。由于 SFTP 是一种完全不同的协议(protocol)代码,因此处理 FTP/FTPS 通常无法执行 SFTP。并且 SFTP 处理代码不会执行 FTP/FTPS。也有异常(exception),即 FileZilla 可以在单个应用程序中处理所有这些协议(protocol)。

关于将 FTPS 与 FtpWebRequests 一起使用,请参阅 msdn .无法将 SFTP 与 FtpWebRequests 一起使用,但有 other libraries .

关于c# - FTP/FTPS/SFTP 之间的区别 - 可配置连接到它们中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33062787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com