0

尝试使用 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 ****and登录到服务器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。

我尝试接收的文件是一个文本文件,仅包含“获取此消息”,但使用时会更大。任何帮助深表感谢。

4

1 回答 1

2

您可能想阅读 FTP 协议。没有一个联系,而是涉及两个。我在您的代码中的任何地方都看不到数据连接,这可能是 425 的来源。

我同意评论——除非这是一个家庭作业式的问题,否则请不要在这里重新发明轮子。FTP很臭,这个问题已经解决了。

于 2009-11-17T23:00:24.523 回答