C# 如何通过SOCKS代理将文件上载到FTP服务器?
我已经使用以下代码成功地将文件上载到我的FTP服务器C# 如何通过SOCKS代理将文件上载到FTP服务器?,c#,.net,proxy,ftp,socks,C#,.net,Proxy,Ftp,Socks,我已经使用以下代码成功地将文件上载到我的FTP服务器 using (WebClient client = new WebClient()) { client.Credentials = new NetworkCredential("USER", "PASS"); client.UploadFile("ftp://adress/" + filename, "STOR", file); } 但是,这不适用于防火墙保护的网络。 连接必须通过SOCKS代理才能绕过防火墙 如何做到这一点
using (WebClient client = new WebClient())
{
client.Credentials = new NetworkCredential("USER", "PASS");
client.UploadFile("ftp://adress/" + filename, "STOR", file);
}
但是,这不适用于防火墙保护的网络。
连接必须通过SOCKS代理才能绕过防火墙
如何做到这一点?
如何使用第三方库(如或任何其他库)建立到SOCKS代理的连接并将文件上载到服务器?.NET framework FTP客户端(
FtpWebRequest
或WebClient
)无法使用SOCKS代理进行连接,仅:
FtpWebRequest类支持HTTP和ISA防火墙客户端代理
如果指定的代理是HTTP代理,则仅支持DownloadFile、ListDirectory和ListDirectoryDetails命令
因此,您需要使用第三方FTP库
例如,对于,您可以使用:
// Setup session options
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "example.com",
UserName = "user",
Password = "mypassword",
};
// Configure proxy
sessionOptions.AddRawSettings("ProxyMethod", "2"); // SOCKS5 proxy
sessionOptions.AddRawSettings("ProxyHost", "proxy");
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Your code
}
有关的选项,请参见
更简单的是为您提供WinSCP GUI
请注意,WinSCP.NET程序集不是本机.NET库。它相当于控制台应用程序上的一个薄薄的.NET包装器
(我是WinSCP的作者)我已经使用您的库上传了一个文件,但我没有使用代理。我意识到没有多少好的袜子代理是免费的。可以使用tor网络吗?不,不支持tor。不管怎样,这是一个不同的问题。+1用于支持多种语言的连接代码生成器(原以为我必须翻译C#,但我没有)