C# 使用C语言实现FTP中的多个并行下载/上传
我想使用C在FTP中并行执行多个下载/上载,而不使用FTPWebRequest。 我已经编写了我的自定义代码,当我尝试同时下载两个文件时,第一个文件可以正常下载,而第二个文件显示大小为0 KBit也可以下载C# 使用C语言实现FTP中的多个并行下载/上传,c#,C#,我想使用C在FTP中并行执行多个下载/上载,而不使用FTPWebRequest。 我已经编写了我的自定义代码,当我尝试同时下载两个文件时,第一个文件可以正常下载,而第二个文件显示大小为0 KBit也可以下载 public void sendCommand(String command, params string[] strfilename) { if (command == "RETR ") //Downloading file from Server {
public void sendCommand(String command, params string[] strfilename)
{
if (command == "RETR ") //Downloading file from Server
{
FileStream output = null;
if (!File.Exists(strfilename[0]))
output = File.Create(strfilename[0]);
else
output = new FileStream(strfilename[0] , FileMode.Open);
command = "RETR " + strfilename[0];
Byte[] cmdBytes = Encoding.ASCII.GetBytes((command + "\r\n").ToCharArray());
clientSocket.Send(cmdBytes, cmdBytes.Length, 0);
Socket csocket = createDataSocket();
DateTime timeout = DateTime.Now.AddSeconds(this.timeoutSeconds);
while (timeout > DateTime.Now)
{
this.bytes = csocket.Receive(buffer, buffer.Length, 0);
output.Write(this.buffer, 0, this.bytes);
if (this.bytes <= 0)
{
break;
}
}
// this.BinaryMode = true;
output.Close();
if (csocket.Connected) csocket.Close();
this.readResponse();
MessageBox.Show("File Downloaded successfully");
else if....so on
}
}
任何代码片段……如何同时发出请求 螺纹 如果是这样,您可能希望确保创建的是ftpcommand类的单独实例
我认为我们需要更多信息来帮助您:正如Dave所说,您需要单独的ftpCommand类实例。研究使用BackgroundWorker在后台异步运行命令。我想知道如何在其上创建线程以同时请求。separate实例意味着我没有得到您的支持。我像这样使用ftpcommand.sendCommandRETR、RMSViewer.xml//从服务器ftpcommand.sendCommandRETR、cms.xml下载//从下载Server@Patrick:因此,如果有100个文件,我必须创建100个Instance?我怀疑您是否能够同时下载100个文件-大多数FTP服务器限制单个IP可以进行的连接数,以防止单个用户过载服务器。您最初的问题是关于同时下载两个文件。有了ftpCommand类的两个不同实例和几个BackgroundWorker类,这是可行的。@Patrick:2个实例?你能告诉我在我上面的代码中在哪里创建2个实例吗?谢谢。不,我不能,因为你的代码只显示了一个方法。回顾创建ftpcommand的代码。在这里,您需要创建多个实例,并让它们在单独的线程(即BackgroundWorker)上执行。@Patrick:FTPCommand FTPCommand=new-FTPCommandServerAddress,UserName,Password;ftpcommand.Login;ftpcommand.sendCommandCWD,/home/praveena/RMS;ftpcommand.sendCommandPASV//ftpcommand.sendCommandNLST*,//ftpcommand.sendCommandNLST*//目录列出ftpcommand.sendCommandSTOR,FTP.pdf;ftpcommand.sendCommandSTOR,Linux.pdf;ftpcommand.sendCommandQUIT;你的意思是说?
ftpcommand.sendCommand("RETR ","RMSViewer.xml"); //Downloading from Server
ftpcommand.sendCommand("RETR ","cms.xml");//Downloading from Server