0

TCPClientとRAWFTPを使用してファイルを取得しようとすると、次のメッセージが返されます。

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ではなくこの接続方法を使用するように特に求められています。

受信しようとしているファイルは、「このメッセージを取得」のみを含むテキストファイルですが、使用すると大きくなります。どんな助けでも大歓迎です。

4

1 に答える 1

2

FTPプロトコルについて読みたいと思うかもしれません。接続は1つではなく、2つ関係しています。あなたのコードのどこにもデータ接続が見当たりません。おそらく425がどこから来ているのでしょう。

私はコメントに同意します-これが宿題スタイルの質問でない限り、ここで車輪の再発明をしないでください。FTPは悪臭を放ち、この問題は解決されました。

于 2009-11-17T23:00:24.523 に答える