0

私は 1 年以上前に c# で ftp クライアント クラスを見つけ、夜間にファイルをアップロードするプロセスでそれを使用しています。数日前、タイムアウトするという問題が発生し始めました。私はこれに精通していないので、なぜこれをしているのかわかりません。

プログラムがファイルのアップロードを開始すると、ログインしているかどうかを確認し、ログインしていない場合は login メソッドを呼び出します。そのメソッドには、このコード ブロックがあります。

       if (this.resultCode != 230)
        {
            this.sendCommand("PASS " + password);

            if (!(this.resultCode == 230 || this.resultCode == 202))
            {
                this.cleanup();
                throw new FtpException(this.result.Substring(4));
            }
        }

this.sendCommand("PASS"... という行で、このコードに入ります。

    private void sendCommand(String command)
    {
        if (this.verboseDebugging) Debug.WriteLine(command, "FtpClient");

        Byte[] cmdBytes = Encoding.ASCII.GetBytes((command + "\r\n").ToCharArray());
        clientSocket.Send(cmdBytes, cmdBytes.Length, 0);
        this.readResponse();
    }

プログラムを実行すると、タイムアウトします。ただし、sendCommand メソッドにステップスルーすると、正常に実行されます。ステップスルーするとうまくいく理由を誰か知っていますか?私たちの側では何も変わっておらず、クライアント側でも何も変わっていないと言われたので、困惑しています. ありがとう。

4

2 に答える 2

0

デバッグ モードで実行し、フリーズしたら一時停止して、ハングアップした回線を正確に確認します。

于 2010-03-17T18:15:28.440 に答える
0

転送を開始する場合 - 接続が中断され、クライアントが再接続を試みて再ログインしない限り、再度ログインする必要はありません。

クライアントが「NOOP」コマンドをサポートしているかどうかを確認することを強くお勧めします(データ接続を介してデータが転送されている間、制御接続を維持するために使用されます)。これは、FTP 実装で最も一般的な問題です。

于 2010-03-17T18:32:10.287 に答える