Использование TCPClient с RAW FTP для получения файла - PullRequest
0 голосов
/ 18 ноября 2009

При попытке извлечь файл с использованием TCPClient и RAW FTP я получаю следующее сообщение:

425 Не удалось установить соединение.

Я подключаюсь используя:

using (TcpClient client = new TcpClient("ServerName", 21))
using (NetworkStream stream = client.GetStream())
using (StreamReader reader = new StreamReader(stream))
using (StreamWriter writer = new StreamWriter(stream))
{

Затем я нормально захожу на сервер, используя USER **** и PASS ***. Мне удается перейти в правильный каталог, используя CWD /**/**, как уже упоминалось, все работает нормально, и я получаю ожидаемые ответные сообщения.

Однако, когда следующий код выполняет сообщение, упомянутое выше, все, что я получаю.

lineToSend = "PASV";
Program.logger.Add("Sending to server: " + lineToSend, 1);
writer.WriteLine(lineToSend);
while (!stream.DataAvailable)
{
    Program.logger.Add(stream.DataAvailable.ToString(), 1);
    Program.logger.Persist();
    Thread.Sleep(1000);

}
lineWeRead = reader.ReadLine();
Program.logger.Add("Received from server: " + lineWeRead, 1);
Program.logger.Persist();

lineToSend = "RETR file.txt";
Program.logger.Add("Sending to server: " + lineToSend, 1);
writer.WriteLine(lineToSend);
while (!stream.DataAvailable)
{
    Program.logger.Add(stream.DataAvailable.ToString(), 1);
    Program.logger.Persist();
    Thread.Sleep(1000);
}

Program.logger.Add("Loop Exited: " + stream.DataAvailable.ToString(), 1);
Program.logger.Persist();
lineWeRead = reader.ReadLine();
Program.logger.Add("Received from server: " + lineWeRead, 1);
Program.logger.Persist();

Я довольно новичок в C # .NET, и меня специально попросили использовать этот метод подключения, а не httpWebRequest.

Файл, который я пытаюсь получить, представляет собой текстовый файл, содержащий только «Получить это сообщение», но при использовании он будет больше. Любая помощь очень ценится.

1 Ответ

2 голосов
/ 18 ноября 2009

Возможно, вы захотите прочитать протокол FTP. Существует не одно соединение, но задействовано два . Я не вижу соединения данных в вашем коде, откуда, вероятно, и идет 425.

Я согласен с комментарием - если это не вопрос домашней работы, пожалуйста, не изобретайте колесо здесь. FTP воняет, и эта проблема была решена.

...