【问题标题】:SftpClient using Url instead of IP as hostSftpClient 使用 Url 而不是 IP 作为主机
【发布时间】:2017-02-06 14:29:44
【问题描述】:

我正在使用以下代码将文件上传到sFTP 服务器。我已经使用 FileZilla 进行了测试上传,文件上传成功。

try
{
    var client = new SftpClient(host, port, username, password);
    client.Connect();
    client.ChangeDirectory(workingDir);
    var listDirectory = client.ListDirectory(workingDir);
    foreach (var file in files)
    {
        var fileStream = new FileStream(file, FileMode.OpenOrCreate);
        client.BufferSize = 4 * 1024; // bypass payload error large files
        client.UploadFile(fileStream, Path.GetFileName(file));
        Log.Info(string.Format("File [{0}] upload complete",file));
    }

}
catch (Exception ex)
{
    Log.Error(ex.Message);
}

但在上面的代码中,我似乎无法完成上传,因为我收到以下错误:

没有这样的主机是已知的

这可能是因为我使用的是主机的 Url 值而不是 IP? (我已经使用 IP 对另一台 FtP 服务器进行了测试,这似乎也可以正常工作)我想知道是不是这样?如果是这样,有没有办法让SftpClientSsh.Net)处理Url?

【问题讨论】:

  • host参数可以是IP地址,也可以是可以解析为IP地址的主机名。它可能显然不是一个 URL,那是完全不同的东西。
  • @arkascha ftp.staging.blahblahblah.com/ContactImport 看起来不像一个名字? FileZilla 似乎没有问题,但我的程序有。
  • 不,这在我看来就像一个字符串,可以解释为部分主机名、部分路径。它既不是 URL 也不是主机名。主机名将是 ftp.staging.blahblahblah.com
  • 一些完整的应用程序接受除主机名之外的其他内容这一事实说明不多:它将字符串分割成单独的标记并连接到解析主机名时返回的 IP 地址。您不能打开任何到 URL 或任意字符串的网络连接,只能到 IP 地址。
  • @arkascha 你是对的。我应该将“/ContactImport”添加到单独的参数中。它不应该是主机名的一部分。您可以将其发布为答案。

标签: c# ssh ftp sftp


【解决方案1】:

host参数可以是IP地址,也可以是可以解析为IP地址的主机名。它可能不是 URL,从技术角度来看是完全不同的东西。

一些完整的应用程序接受除主机名之外的其他内容这一事实几乎没有说明:它将字符串拆分为单独的标记并连接到解析主机名时返回的 IP 地址。但这并不意味着您可以打开任何到 URL 或任意字符串的网络连接。只能打开到 IP 地址的连接。

因此,如果您在某个“程序”中成功测试了一些 URL,例如 sftp://ftp.example.com/ContactImport,这并不意味着您可以在内部使用该字符串作为代码中的主机参数。您需要使用作为此类 URL 一部分的主机名,因此在这种情况下为 ftp.example.com,因为只有这样才能成功解析为 IP 地址。

【讨论】:

  • 哇老兄,非常感谢。我对发送 SFTP 不是很有经验,并且很困惑,因为当我发送 FTP 时,我会使用 ftp://.... url,所以我认为 SFTP 是一样的。我误解了。您的回答对您很有帮助。
  • @Lostaunaum sftpftp 是两个非常不同的东西。它们的使用方式看起来相似,但仅此而已。 ftpsftp 更接近,基于相同的基本协议。但即使他们在 URL 中使用单独的协议方案也有充分的理由......
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
相关资源
最近更新 更多