SftpClient 使用 Url 而不是 IP 作为主机
SftpClient using Url instead of IP as host
我正在使用以下代码将文件上传到 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);
}
但是在上面的代码中,我似乎无法完成上传,因为出现以下错误:
No such host is known
这可能是因为我使用主机的 Url 值而不是 IP? (我已经使用 IP 对另一台 FtP 服务器进行了测试,这似乎也有效)我想知道是否是这种情况?如果是这样,有没有办法让 SftpClient
(Ssh.Net) 处理 Url?
host参数可以是IP地址,也可以是可以解析为IP地址的主机名。它可能不是URL,从技术角度来看是完全不同的东西。
一些完整的应用程序接受主机名以外的东西这一事实说明的很少:它将该字符串拆分为单独的标记并连接到解析主机名时返回的 IP 地址。但这并不意味着您可以打开与 URL 或某个任意字符串的任何网络连接。只能打开到 IP 地址的连接。
因此,如果您在某些 "program" 中成功测试了某些 URL,例如 sftp://ftp.example.com/ContactImport
,这并不意味着您可以在代码中内部使用该字符串作为主机参数。您需要使用作为 URL 一部分的主机名,因此在本例中为 ftp.example.com
,因为只有这样才能成功解析为 IP 地址。
我正在使用以下代码将文件上传到 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);
}
但是在上面的代码中,我似乎无法完成上传,因为出现以下错误:
No such host is known
这可能是因为我使用主机的 Url 值而不是 IP? (我已经使用 IP 对另一台 FtP 服务器进行了测试,这似乎也有效)我想知道是否是这种情况?如果是这样,有没有办法让 SftpClient
(Ssh.Net) 处理 Url?
host参数可以是IP地址,也可以是可以解析为IP地址的主机名。它可能不是URL,从技术角度来看是完全不同的东西。
一些完整的应用程序接受主机名以外的东西这一事实说明的很少:它将该字符串拆分为单独的标记并连接到解析主机名时返回的 IP 地址。但这并不意味着您可以打开与 URL 或某个任意字符串的任何网络连接。只能打开到 IP 地址的连接。
因此,如果您在某些 "program" 中成功测试了某些 URL,例如 sftp://ftp.example.com/ContactImport
,这并不意味着您可以在代码中内部使用该字符串作为主机参数。您需要使用作为 URL 一部分的主机名,因此在本例中为 ftp.example.com
,因为只有这样才能成功解析为 IP 地址。